小程序生命周期
Posted qiqingfu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序生命周期相关的知识,希望对你有一定的参考价值。
小程序生命周期
是指程序从创建、到开始、暂停、唤起、暂停、卸载的过程
小程序生命周期可以从三个方面介绍
- 应用生命周期
- 页面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
向视图线程提供页面数据进行局部渲染。后台运行状态: 当界面进入后台, 服务器也会进入后台运行状态
结束状态: 页面被回收或被销毁
以上是关于小程序生命周期的主要内容,如果未能解决你的问题,请参考以下文章