# 小程序运行机制

根据运行小程序的宿主应用环境不同,小程序也会有不同的启动机制。

# 1. 小程序启动

小程序会有两种情况,一种是冷启动,一种是热启动

  • 冷启动:用户首次打开或小程序被宿主应用主动销毁后再次打开的情况,此时小程序需要重新加载启动,即冷启动。
  • 热启动:假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台状态的小程序切换到前台,这个过程就是热启动。

# 2. 前后台状态

小程序启动后,用户直接可以看到小程序的界面,此时小程序处于前台状态。

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开宿主应用时,小程序并没有直接销毁,而是进入了后台状态;当用户再次打开客户端或再次打开小程序,小程序又会从后台进入前台

# 3. 小程序销毁机制

# 3.1 移动端

通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁,移动端小程序的销毁机制如下:

  • 当小程序占用系统资源过高,可能会被系统销毁或被客户端主动回收。
    • 在 iOS 上,最多允许有 5 个小程序 同时存在,如果超过 5 个会销毁最久未被使用的那个小程序。此外当客户端收到内存告警时,会主动进行所有后台小程序的销毁。
    • 在 Android 上,最多允许有 5 个小程序 同时存在,如果超过 5 个会销毁最久未被使用的那个小程序。此外当内存不足时,系统会直接回收内存,销毁后台长时间未使用的小程序。

# 3.2 桌面端

桌面端只要小程序没有关闭,小程序会一直处于运行状态,如果关闭了,会直接销毁。

# 4. 小程序打开逻辑

小程序冷启动页面打开逻辑较好理解,热启动较复杂,因为可能会自动产生一些跳转。

根据不同的启动参数,这些跳转可以归纳为:

指定页面或参数不同 效果
清空原来的页面栈,打开指定页
保留原先状态