1. 小程序運行機制
1.1. 冷啟動與熱啟動
冷啟動為用戶第一次打開小程序時,因為之前沒有打開過,這是第一種冷啟動的情兌。第二種情況為雖然之前用戶打開過,但是小程序被用戶主動的銷毀過,這種情況下我們再次打開小程序,小程序也是屬于冷啟動的情況。
熱啟動為當用戶之前打開過小程序,在一定時間內用戶再次打開小程序時稱為熱啟動,這個一定時間大概是5分鐘,在這種情況下小程序是不需要重新啟動的,只需要將小程序從后臺切換到前臺。
1.2. 前臺與后臺
小程序在當前打開時,小程序處于前臺狀態。小程序右上角有一個膠囊按鈕,當點這個按鈕時,小程序會被切換到后臺。另外當系統從微信切換到其它環境時,小程序也會被和微信一起切換到后臺。
1.3. 小程序銷毀
小程序進入后臺后,并不會馬上的銷毀,而是會維持一段時間的運行狀態,或者稱為存活時間,這個存活時間一般是5分鐘,5分鐘之后小程序就會被微信主動的銷毀,這是小程序銷毀的第一種情況。第二種消毀的情況是:當小程序占用系統的資源非常高時,也就是當前小程序持續在占用更多系統資源的情況下,這個時候小程 序就有可能被系統銷毀或被微信的客戶端主動的回收。
2. 小程序更新機制
小程序運行在微信里面,小程序中有視圖層、邏輯層還有Native系統層,當開發者用小程序開發工具開發完小程序以后,會把小程序編譯發布到對應的微信服務器上,當小程序首次加載時,會把小程序的包從微信服務器上下載到微信里,這個時候就可以第一次的看到微信小程序了。
當用過一次微信小程序以后,如果當前啟動小程序為冷啟動,這個時候會去讀取緩存以及檢查小程序是否有新版本更新,如果開發者在小程序后臺發布了新版本之后,因為小程序的更新是異步的, 如果當前小程序在本地存在歷史版本的話,那么打開的版本可能還是舊的, 因為是異步的,新版本的更新覆蓋會比較慢,所以有些用戶可能不會馬上使用上新的版本,微信官方給出的解釋是在最差的情況下,在發布的24小以內也可以下發覆蓋到所有的用戶。
熱啟動時是直接將小程序從后臺切換到前臺顯示就可以了。
下面是實現在冷啟動時檢測小程序版本更新的代碼:
checkUpate(){const updateManager = wx.getUpdateManager();updateManager.onCheckForUpdate((res)=>{if (res.hasUpdate){updateManager.onUpdateReady(()=>{wx.showModal({title: '更新提示',content: '新版本已經準備好,是否重啟應用',success(res){if(res.confirm){updateManager.applyUpdate()}}})})}})
}
此方法需要在app.js的生命周期onLunch里調用,執行效果如下圖所示: