代码生命周期就是一个对象的生老病死,通常指程序从创建、开始、暂停、唤起、停止、卸载的过程。小程序的生命周期又可分为应用生命周期和页面的生命周期,先单独分析,在结合两者分析。
应用生命周期
应用生命周期指得是小程序本身的初始化加载、方法以及最终被销毁的过程。
1、用户首次打开小程序,触发onLaunch,用于监听小程序初始化,整个应用生命周期中只触发一次;
2、初始化之后,触发onShow监听小程序显示,小程序启动或从后台进入前台显示,会触发 onShow;
3、小程序用前台进入后台,触发onHide方法;
4、小程序在后台允许一定时间,或系统资源占用过高,会被销毁;
在上面提到的前台和后台,给出的解释是:用户点击右上角关闭、按home健离开微信返回主页,这些情况属于小程序进入后台但没有直接销毁,只有在小程序进入后台一段时间,或者系统资源占用过高的情况才会被销毁,就是说小程序的销毁是需要额外的条件,而非是直接进入后台就销毁;当再次打开微信或打开小程序就称为从后台进入前台;
页面的生命周期
小程序的页面生命周期是指程序内部某个页面从进入到离开或某个页面到另一个页面的过程
1、小程序注册完成后,加载页面,触发onLoad方法,一个页面只会调用一次。
2、页面载入后触发onShow方法,显示页面,每次打开页面都会调用一次。
3、首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。
4、当小程序后台运行或跳转到其他页面时,触发onHide方法。
5、当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
6、当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload
wx.navigateTo跳转状态下,页面A和页面B的生命周期逻辑
1、进入A页面:A执行onLoad()-->onShow()-->onReady();
2、A页面navigateTo B页面:A执行onHide(),B执行onLoad()-->onShow()-->onReady();
3、B页面返回A页面:B执行onUnload(),A执行onShow();
4、退出A页面:A执行onUnload()。
应用生命周期和页面生命周期
1、小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
2、当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
3、当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。
应用生命周期和页面生命周期不是分开的,两者一起进行,相互交叉使用,会用到相同的方法,比如onShow和onHide。