小程式全量釋出之後還是之前的版本
剛剛將小程式全量釋出之後,想著進入小程式測試一下新功能有沒有什麼問題,進行最後一道保險的檢查,如果有問題也好隨時撤回。這一測發現哪有什麼新功能,簡直就是之前的版本。
這時候就需要分析找原因了,首先之前也釋出過新版本,一進入小程式就可以直接使用,所以不可能是沒有釋出成功的問題;那就只剩下一個原因了,提交的程式碼不對,遂檢查提交的程式碼,發現程式碼在本地執行沒有問題;這麼說,問題出現在編譯器上,編譯器上傳程式碼時發生了錯誤(之前發生過編碼過程中發編譯器突然黑屏,然後被強制關閉,再次開啟發現丟失部分程式碼)
立馬提交了一個新版本,等待稽核的過程中開啟小程式,發現有新功能了,功能了,了。(沒有撤回版本,雖然沒有新功能,但是老的功能不受影響,想著直接用下一次版本直接覆蓋就好了)
又是一場沒有bug的bug,但是還是要來找一下虛驚一場的原因,總結下自己在這個過程中的錯誤和不足。
原因:
講原因之前有兩個概念需要先了解一下熱啟動
,冷啟動
小程式啟動會有兩種情況,一種是「冷啟動」,一種是「熱啟動」。 假如使用者已經開啟過某小程式,然後在一定時間內再次開啟該小程式,此時無需重新啟動,只需將後臺態的小程式切換到前臺,這個過程就是熱啟動;冷啟動指的是使用者首次開啟或小程式被微信主動銷燬後再次開啟的情況,此時小程式需要重新載入啟動。
原因其實就是沒有理解小程式的更新機制
小程式冷啟動時如果發現有新版本,將會非同步下載新版本的程式碼包,並同時用客戶端本地的包進行啟動,即新版本的小程式需要等下一次冷啟動才會應用上。 如果需要馬上應用最新版本,可以使用 wx.getUpdateManager API 進行處理。
注意 這裡是冷啟動時發現有新版本才下載程式碼包,如果是熱啟動的話是不會下載的。
擴充套件內容之小程式執行機制
- 小程式沒有重啟的概念
- 當小程式進入後臺,客戶端會維持一段時間的執行狀態,超過一定時間後(目前是5分鐘)會被微信主動銷燬
- 在 iOS 上,當微信客戶端在一定時間間隔內(目前是 5 秒)連續收到兩次及以上系統記憶體告警時,會主動進行小程式的銷燬,並提示使用者 「該小程式可能導致微信響應變慢被終止」。建議小程式在必要時使用
wx.onMemoryWarning
監聽記憶體告警事件,進行必要的記憶體清理。
擴充套件內容之小程式再次開啟邏輯
基礎庫 1.4.0 開始支援,低版本需做相容處理。
使用者開啟小程式的預期有以下兩類場景:
A. 開啟首頁: 場景值有以下幾項:
場景值ID | 說明 |
---|---|
1001 | 發現欄小程式主入口,「最近使用」列表 |
1019 | 微信錢包 |
1022 | 聊天頂部置頂小程式入口 |
1023 | 安卓系統桌面圖示 |
1038 | 從另一個小程式返回 |
1056 | 音樂播放器選單 |
B. 開啟小程式指定的某個頁面: 場景值為除 A 以外的其他
當再次開啟一個小程式邏輯如下:
上一次的場景 | 當前開啟的場景 | 效果 |
---|---|---|
A | A | 保留原來的狀態 |
B | A | 清空原來的頁面棧,開啟首頁(相當於執行 wx.reLaunch 到首頁) |
A 或 B | B | 清空原來的頁面棧,開啟指定頁面(相當於執行 wx.reLaunch 到指定頁) |
總結
- 遇到問題表現得太過慌張,以至於忽略細節。一開始說更新版本後一進入小程式就可以直接使用,但是這時候往往會有一個彈窗告訴有新版本更新(程式使用了
wx.getUpdateManager
檢測版本),這次沒有彈窗,自己沒有注意到。也就是說我在釋出前5分鐘內進入過小程式,我這次開啟小程式屬於熱啟動,不會觸發下載程式碼包。- 雖然有積極解決問題了,但是沒有找到問題本質,原因在於對小程式更新機制不夠了解。
- 切記遇到問題一定要保持冷靜思考,著急只會讓自己更加迷失。
參考: https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html