小程式生命周期 是指程式從創建、到開始、暫停、喚起、暫停、卸載的過程 小程式生命周期可以從三個方面介紹 應用生命周期 頁面Page生命周期 應用生命周期會影響Page生命周期 小程式一個路由跳轉的 API也會影響到 Page頁面的聲明周期 小程式應用生命周期 用戶首次打開小程式,會先觸發 初始化 其 ...
小程式生命周期
是指程式從創建、到開始、暫停、喚起、暫停、卸載的過程
小程式生命周期可以從三個方面介紹
- 應用生命周期
- 頁面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
向視圖線程提供頁面數據進行局部渲染。後臺運行狀態: 當界面進入後臺, 伺服器也會進入後臺運行狀態
結束狀態: 頁面被回收或被銷毀