微信小程序学习之路《六》 生命周期
微信小程序开发 - 生命周期
通俗的讲,生命周期就是指一个对象的生老病死。 从软件的角度来看,生命周期指程序从创建、到开始、暂停、唤起、停止、卸载的过程。
小程序的生命周期分为:应用生命周期、页面生命周期
应用生命周期
在app.js的app()中注册程序
App({ onLaunch: function () { console.log('onLaunch') }, onShow: function () { console.log('onShow') }, onHide: function () { console.log('onHide') }, other:function(){
} }) |
1.小程序首次被打开,初始化完成时会触发 onLaunch(全局只触发一次)。 2.小程序启动完成后,会触发onShow方法,监听小程序显示。 3.小程序从前台进入后台,触发 onHide方法。 4.小程序从后台进入前台显示,触发 onShow方法。 5.小程序进入后台运行一定时间,或系统资源占用过高,会被销毁。
前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。 |
页面生命周期
在页面.js中的Page({})中注册页面。
Page({ data:{}, onLoad:function(options){ // 页面初始化 options为页面跳转所带来的参数 }, onReady:function(){ // 页面渲染完成 }, onShow:function(){ // 页面显示 }, onHide:function(){ // 页面隐藏 }, onUnload:function(){ // 页面关闭 } }) |
小程序页面生命周期由两大线程组成:负责界面的线程(view thread)和服务线程(appservice thread),各司其职又互相配合。
界面线程有四大状态: 2.首次渲染状态:收到“服务线程”发来的初始化数据后(就是 json和js中的data数据),开始渲染小程序界面,渲染完毕,发送“首次渲染完毕信号”给服务线程,并将页面展示给用户。 3.持续渲染状态:此时界面线程继续一直等待“服务线程”通过this.setdata()函数发送来的界面数据,只要收到就重新局部渲染,也因此只要更新数据并发送信号,界面就自动更新。 4.结束状态:你懂得。 |
服务线程五大状态: onload是只会首次渲染的时候执行一次,onshow是每次界面切换都会执行,简单理解,这就是唯一差别。 2 等待激活状态:接到“界面线程初始化完成”信号后,将初始化数据发给“界面线程”,等待界面线程完成初次渲染。 3.激活状态:收到界面线程发送来的“首次渲染完成”信号后,进入激活状态既程序正常运行状态,并调用自定义的onReady()函数。 此状态下就可以通过 this.setData 函数发送界面数据给界面线程进行局部渲染,更新页面。 4.后台运行状态:如果界面进入后台,服务线程就进入后台运行状态,从目前的官方解读来说,这个状态挺奇怪的,和激活状态是相同的,也可以通过setdata函数更新界面的。毕竟小程序的框架刚推出,应该后续会有很大不同吧。 5.结束状态:你懂得。 |
应用生命周期 影响 页面生命周期
1.当小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。 2.当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。 3.当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。 |