【小程序的生命周期是如何运作的,跟页面栈又有什么关系 _小程序语言基础 】 | IT修真院·坑乎
问题已收录 小程序的生命周期是如何运作的,跟页面栈又有什么关系
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(1)
小程序语言基础
详细描述
图片
文本
编辑于2024-05-03
  • [上海|结业弟子]JS-温奇
    0

    小程序由两大线程组成:负责界面的视图线程(view thread)和负责数据、服务处理的服务线程(appservice thread),两者协同工作,完成小程序页面生命周期的调用。

    视图线程有四大状态:

    1. 初始化状态:初始化视图线程所需要的工作,初始化完成后向 “服务线程”发送初始化完成信号,然后进入等待状态,等待服务线程提供初始化数据
    2. 首次渲染状态:当收到服务线程提供的初始化数据后(json和js中的data数据),渲染小程序界面,渲染完毕后,发送“首次渲染完成信号”给服务线程,并将页面展示给用户。
    3. 持续渲染状态:此时界面线程继续一直等待“服务线程”通过this.setdata()函数发送来的界面数据,只要收到就重新局部渲染,也因此只要更新数据并发送信号,界面就自动更新。
    4. 结束状态:页面被回收或者销毁、应用被系统回收、销毁时触发。

    服务线程五大状态:

    1. 初始化状态:此阶段仅启动服务线程所需的基本功能,比如信号发送模块。系统的初始化工作完毕,就调用自定义的onload和onshow,然后等待视图线程的“视图线程初始化完成”号。onload是只会首次渲染的时候执行一次,onshow是每次界面切换都会执行,简单理解,这就是唯一差别。
    2. 等待激活状态:接收到“视图线程初始化完成”信号后,将初始化数据发送给“视图线程”,等待视图线程完成初次渲染。
    3. 激活状态:收到视图线程发送来的“首次渲染完成”信号后,就进入激活状态既程序的正常运行状态,并调用自定义的onReady()函数。此状态下就可以通过 this.setData 函数发送界面数据给界面线程进行局部渲染,更新页面。
    4. 后台运行状态:如果界面进入后台,服务线程就进入后台运行状态,从目前的官方解读来说,这个状态挺奇怪的,和激活状态是相同的,也可以通过setdata函数更新界面的。毕竟小程序的框架刚推出,应该后续会有很大不同吧。
    5. 结束状态:页面被回收或者销毁、应用被系统回收、销毁时触发。
    原文地址:
    https://www.jianshu.com/p/0078507e14d3
    编辑于2019-11-07