导读

小程序的生命周期主要有三大部分:应用生命周期页面生命周期组件生命周期。其中,应用生命周期和页面生命周期和其双线程机制(AppService逻辑线程和webview渲染线程)以及小程序的冷启动和热启动息息相关,下述关于应用生命周期的介绍也将穿插双线程的的一些流程。

应用生命周期

应用生命周期主要有以下几个:

  • onLaunch

小程序冷启动后全局加载一次,可以在此展示启动信息,并调用微信登录

  • onShow

    小程序从后台进入前台(通常是热启动),和初次加载也就是冷启动时触发。可以在此,更新应用状态,设置全局变量等。

  • onHide

应用关闭或者退出。小程序应用从前台进入后台时触发。

  • onError

全局错误,JS脚本错误时触发。

  • onPageNotFound

页面未找到时被触发。

页面生命周期

页面也有自己的生命周期,除此之外还有一些特殊的方法。其页面的生命周期流程可以参考下图:

img

  • onLoad

页面加载后触发,此时的加载是页面实例Page被创建后立刻加载,此时AppService逻辑线程创建,等待webview渲染线程的通知。

此时可以做一些页面初始信息的获取

  • onShow

有两点需要注意,第一点是紧跟onLoad触发后触发,因为页面加载也等同于页面从无到有,页面实例Page进入激活态(Active),此时未发生首次渲染;第二点是页面从存活态(Alive)进入激活态(Active),相当于从后台进入前台,也会触发onShow。

  • onHide

页面从前台进入后台时触发,此时页面实例从激活态(Active)转入存活态(Alive)

  • onReady

这一生命周期函数有点复杂。其是AppService创建后等待webview渲染线程的创建完毕通知,当收到通知后,将通过JSBridge向渲染线程发送初次数据;当渲染进程**完成首次渲染(First Render)**后,通知逻辑线程,逻辑线程收到通知后,将触发onReady页面生命周期函数。

由于完成了初次渲染,可以在此操作DOM,并完成图表、地图的初始化。

  • onUnload

当页面销毁后,也就是销毁Page实例前触发该页面生命周期函数。可以在这里清除定时器、释放地图等。

  • onRouteDone

监听路由动画完成后触发。

页面的其他一些触发函数

  • onPullDownRefresh

监听用户下拉动作

  • onReachBottom

页面上拉触底事件的处理函数

点击右上角转发时触发。

用户点击右上角发布到朋友圈

用户点击右上角收藏

页面滚动时触发的逻辑函数

页面尺寸变化时触发

当前是tab页时,点击tab会触发。

页面销毁前保留状态回调

组件生命周期

组件生命详细描述参考微信小程序文档

image-20250301102905485

image-20250301102952770

image-20250301103057872

总结

以上就是小程序相关的生命周期,需要结合小程序特有的双线程机制加强理解,以避免不规范的代码。