微信小程序 运行机制

2023-03-23 10:27:07 作者:admin

本文整理自网络,侵删。

小程序运行机制

前台/后台状态

小程序启动后,界面被展示给用户,此时小程序处于前台状态。

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态,小程序还可以运行一小段时间。

当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台。但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行。

小程序启动

这样,小程序启动可以分为两种情况,一种是冷启动,一种是热启动。

  • 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
  • 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

小程序销毁时机

通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁。具体而言包括以下几种情形:

  • 当小程序进入后台,可以维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁。
  • 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。在 iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户 「运行内存不足,请重新打开该小程序」。具体策略会持续进行调整优化。建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。
基础库 1.1.0 及以上,1.4.0 以下版本: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。

启动场景分类

用户打开小程序时,场景可分为以下 A、B 两类:

A. 保留上次的浏览状态。场景值有以下几项:

场景值ID说明
1001发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表)
1003星标小程序列表
1023系统桌面小图标打开小程序
1038从其他小程序返回小程序
1056聊天顶部音乐播放器右上角菜单,打开小程序
1080客服会话菜单小程序入口,打开小程序
1083公众号会话菜单小程序入口 ,打开小程序(只有腾讯客服小程序有)
1089聊天主界面下拉,打开小程序/微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)
1090长按小程序右上角菜单,打开小程序
1103发现-小程序主入口我的小程序,打开小程序
1104聊天主界面下拉,从我的小程序,打开小程序
1113安卓手机负一屏,打开小程序
1114安卓手机侧边栏,打开小程序
1117后台运行小程序的管理页中,打开小程序
  • 若进入的场景中带有 path,则每次打开小程序时都进入对应的 path 页面
  • 若进入的场景中不带 path:若小程序是热启动,则保留原来状态若小程序是冷启动,则遵循下一节的重启策略,可能是首页或上次退出的页面

B. relaunch 到指定页或首页

包括除 A 类外的其他场景

  • 若进入的场景中带有 path,则每次点击时都进入对应的 path 页面
  • 若进入的场景中不带 path,则每次进入都打开首页

A 类场景的重新启动策略

基础库 2.8.0 开始支持,低版本需做兼容处理。

小程序被销毁后,下次冷启动如果属于 B 类场景,将会进入特定的页面。

阅读剩余部分

相关阅读 >>

微信小程序api 实时语音-监听被动断开通话事件

微信小程序 服务平台能力介绍

微信小程序 插件调用api的限制

微信小程序 运力方使用onorderpreadd

微信小程序 javascript支持情况

微信小程序 小程序使用reorder

微信小程序云开发api get方法

微信小程序 小程序代码构成

sdk数据库 command聚合操作符字符串操作符

微信小程序api 实时语音-监听在线状态变化事件

更多相关阅读请进入《微信小程序》频道 >>


Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
书籍

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节

人民邮电出版社

本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者



在线咨询 拨打电话