1. 程式人生 > >小程序生命周期

小程序生命周期

打開 direct 分享 hide nsh 如果 當前 什麽 渲染

小程序生命周期

是指程序從創建、到開始、暫停、喚起、暫停、卸載的過程

小程序生命周期可以從三個方面介紹

  • 應用生命周期
  • 頁面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向視圖線程提供頁面數據進行局部渲染。

  • 後臺運行狀態: 當界面進入後臺, 服務器也會進入後臺運行狀態

  • 結束狀態: 頁面被回收或被銷毀

小程序生命周期