微信小程序运行机制和生命周期

Posted 铁锤妹妹@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序运行机制和生命周期相关的知识,希望对你有一定的参考价值。

一. 运行机制

首先了解下小程序的运行机制,小程序从启动到最终被销毁,会经历很多不同的状态,小程序在不同状态下会有不同的表现。大致运行机制如下图。

小程序生命周期图

接下来我们是图中概念讲解,项目中也会经常遇到。

1)小程序的启动

通常来说,小程序启动可以分为两种情况,一种是冷启动,一种是热启动

  • 冷启动: 如果用户首次打开,或者小程序销毁后被用户再次打开,此时小程序需要重新加载启动,就是冷启动。
  • 热启动: 如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,加载速度比前者快不少,说明此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
    从小程序生命周期的角度看,我们一般讲的启动专指冷启动,热启动一般指后台切前台。

2)小程序前后台

小程序完成加载之后,会有两种状态,分别是前台状态后台状态

  • 小程序启动后,界面被展示给用户,此时小程序处于前台状态
  • 当用户「关闭」小程序时,小程序并没有真正被关闭,而是进入了「后台」状态,此时小程序还可以短暂运行一小段时间,但部分 API 的使用会受到限制。这里操作就是上图中的切后台
  • 切后台的方式包括但不限于以下几种:
  1. 点击右上角胶囊按钮离开小程序
  2. ios 从屏幕左侧右滑离开小程序
  3. 安卓点击返回键离开小程序
  4. 小程序前台运行时直接把微信切后台(手势或 Home 键)
  5. 小程序前台运行时直接锁屏

小程序销毁前,当用户再次进入微信并打开小程序,小程序又会重新进入前台状态。也就是前面说的热启动

3)挂起状态

小程序进入后台状态一段时间后(目前是 5 秒),微信会停止小程序 JS 线程的执行,小程序进入挂起状态。此时小程序的内存状态会被保留,但开发者代码执行会停止,事件和接口回调会在小程序再次进入「前台」时触发。

小tip:
当开发者使用了后台音乐播放后台地理位置等能力时,小程序可以在「后台」持续运行,不会进入到「挂起」状态。

在项目中定义了一个倒计时事件,经验证,后台挂起时内存状态确实被保留,事件停止执行,当在小程序销毁之前,进入前台,就开始执行倒计时事件。

4)小程序销毁事件

如果用户很久没有使用小程序,或者系统资源紧张,小程序会被「销毁」,即完全终止运行。具体而言包括以下几种情形:

1 ) 当小程序进入后台并被「挂起」后,如果很长时间(目前是 30 分钟)都未再次进入前台,小程序会被销毁。

2 ) 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。比如在 iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户 「运行内存不足,请重新打开该小程序」
3) 在微信客户端下拉最近访问的小程序里删除,也会从内存里销毁。

二. 关于小程序生命周期

  1. 生命周期分为 程序页面 两部分,对于程序,我们冷启动小程序时,会触发onLaunch方法,当我们的小程序初始化完成后,便会触发onShow方法,页面加载并显示,此时触发页面的onLoadonShow方法,成功显示页面。
  2. 首次显示页面,还会触发onReady方法,对页面元素进行渲染,注意该方法,一个页面智慧调用一次。
  3. 当小程序切入后台时,小程序会先触发页面的onHide方法,将页面隐藏,再触发 程序的onHide方法。
  4. 当小程序从后台切前台时,先触发程序onShow,再触发页面的onShow方法,将页面显示。

微信小程序运行机制官方文档
【微信小程序】运行机制和更新机制

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

教你理解微信小程序的生命周期和运行原理

微信小程序:渲染流程、生命周期和触发顺序

微信小程序的生命周期和路由

微信小程序生命周期(onLoad,onHide,onShow,onReady,onUnload)

微信小程序生命周期

微信小程序生命周期