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


    一. 运行机制

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

    小程序生命周期

    在这里插入图片描述

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

    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方法,将页面显示。

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

  • 相关阅读:
    【从头构筑C#知识体系】2.C# 2.0
    树莓派学习笔记
    Java中的<<、>>、>>>运算符
    JVM之【运行时数据区2——堆】
    海外公司注册推广的9个实用技巧建议-华媒舍
    Umi3实战教程
    Python实现压缩和解压缩
    百度2023内推
    解决因国内各大镜像站关停导致无法下载镜像的问题
    添加马赛克并虚化边框的技巧分享
  • 原文地址:https://blog.csdn.net/weixin_45811256/article/details/127858047