從點開到顯示的過程
點開微信小程序的一瞬間,微信客戶端做了些什么
- 點開微信小程序;
- 初始化宿主環境,加載小程序代碼包,如果本地有緩存就用緩存,如果沒有緩存就執行網絡下載;
- 給APP實例派發onLaunch事件,App構造器參數所定義的onLaunch方法被調用
- 進入微信小程序執行后續的頁面邏輯
生命周期的觸發條件
app的生命周期
App的生命周期是由用戶操作主動觸發的,開發者不能在代碼里主動調用。只能使用回調函數做觸發功能,回調函數必須定義在app.js
的App()
中。
示例代碼
App({
onLaunch (options) {
// Do something initial when launch.
},
onShow (options) {
// Do something when show.
},
onHide () {
// Do something when hide.
},
onError (msg) {
console.log(msg)
},
globalData: 'I am global data'
})
主要的幾個生命周期函數
onLaunch(Object object)
小程序初始化完成時觸發,全局只觸發一次。參數也可以使用 wx.getLaunchOptionsSync 獲取。
onShow(Object object)
小程序啟動,或從后臺進入前臺顯示時觸發。也可以使用 wx.onAppShow 綁定監聽。
onHide()
小程序從前臺進入后臺時觸發。也可以使用 wx.onAppHide 綁定監聽。
onError(String error)
小程序發生腳本錯誤或 API 調用報錯時觸發。也可以使用 wx.onError 綁定監聽。
App的兩種狀態
- 后臺狀態:用戶點擊小程序右上角關閉按鈕,或手機的home 鍵時,會離開小程序,但小程序并不會被銷毀,而是進入后臺狀態。此時,APP構造器參數里的onHide 方法會被調用。
- 前臺狀態:用戶再次小程序時,微信用戶端會喚醒后臺狀態的微信小程序,微信小程序就進入了前臺狀態,onShow 方法會被調用。
頁面的生命周期
頁面的生命周期首先要考慮三個事件:
- 頁面初次加載時:onLoad,在頁面沒被銷毀之前只會觸發1次。
- 頁面顯示時:onShow ,從別的頁面返回到當前頁面時,都會被調用。
- 頁面初次渲染完成時:onReady,在頁面沒被銷毀前只會觸發1次,在邏輯層可以和視圖層進行交互。
頁面顯示后,隨著用戶的操作,還會觸發其它的事件:
- 頁面不可見時:onHide,wx.navigateTo切換到其他頁面、底部tab切換時觸發。
- 返回到其它頁時:onUnload,wx.redirectTo或wx.navigateBack使當前頁面會被微信客戶端銷毀回收時觸發。
頁面生命周期圖
頁面生命周期