小程序生命周期
小程序生命周期
是指程序從創建、到開始、暫停、喚起、暫停、卸載的過程
小程序生命周期可以從三個方面介紹
- 應用生命周期
- 頁面Page生命周期
- 應用生命周期會影響Page生命周期
小程序一個路由跳轉的 API也會影響到 Page頁面的聲明周期
小程序應用生命周期
用戶首次打開小程序,會先觸發 onLaunch
初始化
其次, 觸發小程序應用生命周期的 onShow
方法
當切換到桌面時關閉小程序會觸發 onHide
, 此時到小程序沒有完全銷毀,會在後臺運行一段時間。 當用戶z再次進入小程序會再觸發 onShow
生命周期函數。
為什麽小程序不提供銷毀的鉤子函數呢? 應該是因為 IOS系統的限制, 按下 Home鍵離開微信時, app的狀態會被掛起。如果掛起時間過長到話,系統應該會把 app的進程殺掉,所以我們無法得到小程序銷毀的通知。
頁面生命周期
小程序頁面加載,會先觸發 onLoad
監聽頁面加載
頁面加載之後,會觸發 onShow
監聽頁面顯示
頁面顯示之後,會進行渲染頁面結構和樣式,觸發onReady
, 一個頁面只會觸發一次
當通過 wx.navigateTo 路由跳轉時,觸發 onHide
。保留當前頁面,跳轉到應用內的某個頁面
當通過 wx.redirectTo 路由跳轉時,觸發 unLoad
。關閉當前頁面,跳轉到應用內的某個頁面
應用生命周期和頁面生命周期的關系
小程序初始化完成後, 頁面首次加載觸發 onLoad
,一個頁面只會觸發一次
當小程序進入後臺時,先會出發頁面的 onHide
,其次觸發應用的 onHide
當小程序從後臺進入前臺時, 先觸發應用的 onShow
,其次觸發頁面的 onShow
小程序生命周期圖
視圖線程的四大狀態
初始化狀態: 初始化視圖線程所需要的工作,
onLaunch
完成後會向服務器發送初始化完成, 然後進入waiting data
等待服務器線程提供初始化數據首次渲染狀態: 當接受到服務器提供的初始化數據後,渲染小程序界面,渲染完畢之後會再次通知服務器,並且將頁面展示給用戶
持續渲染狀態: 此時視圖線程繼續一直等待
服務線程通過 this.setData
函數發送來的界面數據, 只要收到就會重新布局渲染,也因此只需要this.setData
修改數據視圖會隨之更新的原因結束狀態: 頁面被回收或被銷毀
服務線程五大狀態
初始化狀態: 會啟用服務器線程所需的基本功能, 服務器初始化好之後就會執行自定義的
onLoad
頁面加載和onShow
。等待視圖線程初始化
完成好。onLoad
只會在首次渲染的時候執行一次,onShow
每次頁面切換都會執行等待激活狀態: 等待視圖線程初始化完成好後,
Send initial Data
將初始化數據發送給視圖線程,然後等待視圖線程初次渲染好的通知激活狀態: 當收到視圖線程首次渲染好之後, 就會進入激活狀態即正常運行狀態, 並且調用頁面的
onReady
函數。此時,可以通過this.setData
向視圖線程提供頁面數據進行局部渲染。後臺運行狀態: 當界面進入後臺, 服務器也會進入後臺運行狀態
結束狀態: 頁面被回收或被銷毀
小程序生命周期