小程序生命周期

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向视图线程提供页面数据进行局部渲染。

  • 后台运行状态: 当界面进入后台, 服务器也会进入后台运行状态

  • 结束状态: 页面被回收或被销毁

以上是关于小程序生命周期的主要内容,如果未能解决你的问题,请参考以下文章

小程序的生命周期

关于片段生命周期

调用 replace() 时片段的生命周期是啥?

Android片段生命周期:onResume调用了两次

在不存在的片段上调用片段生命周期和 onCreate 的问题

Android 片段生命周期