小程序生命周期-基礎篇

弓骑兵 2024-04-14 22:12 11次浏览 0 条评论 taohigo.com

小程序App生命周期

  • 小程序App生命周期是在app.js裡面調用的,App(Object)函數用來註冊一個小程序,接受一個 Object 參數,指定其小程序的生命周期回調
  • App() 必須在 app.js 中調用,必須調用且隻能調用一次,不然會出現無法預期的後果

1 . 前臺、後臺定義

  • 當用戶點擊左上角關閉,或者按瞭設備 Home 鍵離開微信,小程序並沒有直接銷毀,而是進入瞭後臺onHide;當再次進入微信或再次打開小程序,又會從後臺進入前臺onShow。需要註意的是:隻有當小程序進入後臺一定時間,或者系統資源占用過高,才會被真正的銷毀。

2 . 運行機制

  • 小程序啟動會有兩種情況,一種是「冷啟動」,一種是「熱啟動」。 假如用戶已經打開過某小程序,然後在一定時間內再次打開該小程序,此時無需重新啟動,隻需將後臺態的小程序切換到前臺onShow,這個過程就是熱啟動;冷啟動指的是用戶首次打開或小程序被微信主動銷毀後再次打開的情況,此時小程序需要重新加載啟動onLauch
  • 小程序沒有重啟的概念
  • 當小程序進入後臺,客戶端會維持一段時間的運行狀態,超過一定時間後(目前是5分鐘)會被微信主動銷毀
  • 在 iOS 上,當微信客戶端在一定時間間隔內(目前是 5 秒)連續收到兩次及以上系統內存告警時,會主動進行小程序的銷毀,並提示用戶 「該小程序可能導致微信響應變慢被終止」。建議小程序在必要時使用 wx.onMemoryWarning 監聽內存告警事件,進行必要的內存清理。

3 . 更新機制

  • 小程序冷啟動時如果發現有新版本,將會異步下載新版本的代碼包,並同時用客戶端本地的包進行啟動,即新版本的小程序需要等下一次冷啟動才會應用上。 如果需要馬上應用最新版本,可以使用 wx.getUpdateManager API 進行處理
  • 小程序強制更新

//註意,小程序的更新的api需要基礎庫在1.9.90以上
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 請求完新版本信息的回調,省略回調會報錯,如下圖
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已經準備好,是否重啟應用?',
success: function (res) {
if (res.confirm) {
// 新的版本已經下載好,調用 applyUpdate 應用新版本並重啟
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新的版本下載失敗
wx.showModal({
title: '更新提示',
content: '新版本下載失敗',
showCancel:false
})
})