uni-app應(yīng)用異常退出時處理機(jī)制探究

      網(wǎng)友投稿 919 2025-03-31

      一、前言

      應(yīng)用uni-app跨端框架開發(fā)APP過程中,遇到以下新增需求:

      應(yīng)用在閃崩或異常退出時,用戶希望正在填寫的大量信息可以得以保存。當(dāng)用戶再次打開APP時,之前未提交的信息可回顯。

      剛開始會考慮到uni-app框架本身是否提供以上錯誤處理解決方案。但是,通過閱讀官方文檔,發(fā)現(xiàn)其并不提供針對以上問題的解決方案。需要項目開發(fā)人員自定義實現(xiàn)邏輯處理以上問題。

      初讀以上需求,可以應(yīng)用uni-app提供的setStorage()與setStorageSync()內(nèi)置方法實現(xiàn)。

      但是,以下問題需要考慮清楚:

      何時調(diào)用以上方法緩存數(shù)據(jù),應(yīng)用定時任務(wù)setInterval(callback, delay, rest)?還是通過頁面【暫存】按鈕觸發(fā)緩存動作?

      何時調(diào)用緩存中的數(shù)據(jù)信息進(jìn)行uni.getStorage()回顯?

      何時調(diào)用uni.removeStorage()清空緩存中的數(shù)據(jù)信息?

      給出的思考結(jié)果如下:

      應(yīng)用定時任務(wù)setInterval(callback, delay, rest)調(diào)用以上緩存數(shù)據(jù)方法會存在設(shè)置的delay值過小,影響APP性能;delay值過大,會造成當(dāng)前用戶輸入信息還未暫存,用戶返回上一頁進(jìn)行其他操作導(dǎo)致當(dāng)前輸入信息未暫存問題,所以設(shè)置一個合適值至關(guān)重要,既能最大限度的做到不影響應(yīng)用性能,也能過做到保證數(shù)據(jù)完整性;通過頁面【暫存】按鈕觸發(fā)緩存動作,可以保證數(shù)據(jù)的完整性。但是以上2種策略均不能很好的解決應(yīng)用閃崩問題。

      當(dāng)用戶從其他頁面重新進(jìn)入當(dāng)前信息維護(hù)頁時,調(diào)用緩存中的數(shù)據(jù)信息進(jìn)行uni.getStorage()回顯。

      用戶登出時,調(diào)用uni.removeStorage()清空緩存中的數(shù)據(jù)信息。

      二、實現(xiàn)機(jī)制

      為應(yīng)對用戶異常退出場景,在用戶非正常退出(即并不是點擊【退出】按鈕退出系統(tǒng))時,保存用戶申請信息;

      緩存的數(shù)據(jù)信息為【用戶ID + 企業(yè)ID】作為緩存主鍵,確保數(shù)據(jù)一致性、完整性,保障數(shù)據(jù)安全;

      緩存內(nèi)存有數(shù)據(jù)信息時,就調(diào)用緩存中的數(shù)據(jù)信息,緩存內(nèi)無數(shù)據(jù)信息,則用戶重新錄入;

      用戶點擊【退出】按鈕時,清除緩存信息;

      考慮根據(jù)頁面生命周期函數(shù)進(jìn)行處理,在博文《跨平臺應(yīng)用開發(fā)進(jìn)階(一) :走近 uni-app》中介紹了頁面生命周期onHide()與onUnload(),我們注意到onHide()觸發(fā)的場景:

      導(dǎo)航頁1---->導(dǎo)航頁2,會觸發(fā)導(dǎo)航頁1 onHide();

      導(dǎo)航頁----->子頁面,會觸發(fā)導(dǎo)航頁 onHide();

      子頁面1----->子頁面2,會觸發(fā)子頁面1 onHide();

      切換到其他應(yīng)用時,觸發(fā)當(dāng)前頁面的onHide();

      onUnload()觸發(fā)的場景:

      從子頁面2返回到子頁面1,會觸發(fā)子頁面2的onUnload();

      從子頁面返回到導(dǎo)航頁,會觸發(fā)子頁面的onUnload();

      注意:

      導(dǎo)航頁之間的切換不會觸發(fā)onUnload()。

      uni-app應(yīng)用異常退出時處理機(jī)制探究

      頁面2返回到(頁面1或者導(dǎo)航頁)時,頁面2只會觸發(fā)onUnload(),并不會觸發(fā)onHide()。

      由此可知,

      在頁面生命周期onHide()與onUnload()應(yīng)用uni.setStorage()緩存用戶信息;

      緩存的數(shù)據(jù)信息為【用戶ID + 企業(yè)ID】作為緩存主鍵,確保數(shù)據(jù)一致性、完整性,保障數(shù)據(jù)安全;

      根據(jù)【用戶ID + 企業(yè)ID】緩存主鍵緩存應(yīng)用uni.getStorage()判斷緩存是否有數(shù)據(jù)信息,存在數(shù)據(jù)信息就調(diào)用緩存中的數(shù)據(jù)信息,緩存內(nèi)無數(shù)據(jù)信息,則用戶重新錄入;

      用戶提交成功或點擊【退出】按鈕時,應(yīng)用uni.removeStorage()清除緩存信息;

      注意??:清除緩存時應(yīng)注意防止出現(xiàn)內(nèi)存泄露問題!

      三、拓展閱讀

      《跨平臺應(yīng)用開發(fā)進(jìn)階(十) :uni-app 實現(xiàn)數(shù)據(jù)存儲、獲取和刪除》

      《跨平臺應(yīng)用開發(fā)進(jìn)階(一) :走近 uni-app》

      移動APP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:WPS表格辦公—提取單元格數(shù)字個數(shù)的COUNT函數(shù)(wps計算單元格個數(shù))
      下一篇:更改交叉引用(更改交叉引用內(nèi)容)
      相關(guān)文章
      九月丁香婷婷亚洲综合色| 亚洲性日韩精品一区二区三区| 亚洲国产成人久久一区久久| 亚洲日韩AV无码一区二区三区人| 国产成人精品日本亚洲专区6| 亚洲国产成AV人天堂无码| 亚洲精品网站在线观看你懂的| 亚洲毛片在线观看| 午夜亚洲AV日韩AV无码大全| 国产精品国产亚洲精品看不卡| 亚洲人成色7777在线观看| 亚洲午夜国产精品无码老牛影视| 色噜噜AV亚洲色一区二区| 在线A亚洲老鸭窝天堂| 国产亚洲精品a在线观看| 亚洲最大AV网站在线观看| 亚洲综合图色40p| 亚洲精品无码久久久久| 亚洲成亚洲乱码一二三四区软件| 久久久久久久尹人综合网亚洲| 亚洲爆乳无码一区二区三区| 亚洲AV无码一区二区乱子伦| 亚洲欧洲日韩国产综合在线二区| 亚洲一本综合久久| 亚洲午夜在线一区| 亚洲无码一区二区三区| 亚洲国产精品自在自线观看| 成人亚洲国产精品久久| 亚洲av手机在线观看| 亚洲一级特黄大片无码毛片| 丝袜熟女国偷自产中文字幕亚洲| 亚洲综合另类小说色区色噜噜| 亚洲成年人啊啊aa在线观看| 亚洲天堂中文字幕在线| 亚洲中文字幕无码中文字在线| 亚洲AV无码久久精品成人| 国产V亚洲V天堂无码| 亚洲国产高清视频在线观看| 亚洲中文字幕久久精品无码A| 色天使色婷婷在线影院亚洲| 久久青青草原亚洲av无码|