运行机制¶
小程序启动¶
小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。
热启动:假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动; 冷启动:用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动,即冷启动。 小程序没有重启的概念。
小程序销毁¶
需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。
当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)小程序会被微信主动销毁。 当小程序占用系统资源过高,可能会背系统销毁或被微信客户端主动回收。 在 iOS 上,当微信客户端在一定时间间隔内(目前是 5 秒)连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户 「该小程序可能导致微信响应变慢被终止」。 建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。 基础库 1.1.0 及以上,1.4.0 以下版本: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。
再次打开逻辑¶
1.4.0 新版功能: 低版本需做 兼容处理 。
用户打开小程序的预期有以下两类场景:
打开首页: 场景值有以下几项:
场景值ID 说明 1001 发现栏小程序主入口,「最近使用」列表 1019 微信钱包 1022 聊天顶部置顶小程序入口 1023 安卓系统桌面图标 1038 从另一个小程序返回 1056 音乐播放器菜单 B. 打开小程序指定的某个页面: 场景值为除 A 以外的其他
当再次打开一个小程序逻辑如下:
上一次的场景 当前打开的场景 效果 A A 保留原来的状态 B A 清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页) A 或 B B 清空原来的页面栈,打开指定页面(相当于执行 wx.reLaunch 到指定页)