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

小程序App生命周期

  1. 小程序App生命周期是在app.js里面调用的,App(Object)函数用来注册一个小程序,接受一个 Object 参数,指定其小程序的生命周期回调
  2. App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

微信小程序 - app生命周期和运行机制
小程序第一次打开时将会下载整个小程序代码包,紧接着通过app.json配置初始化App,页面线程开始渲染首页,初始化完成后应用服务线程执行App中onLauch()函数和onShow()函数,然后才执行页面中的onLoad()函数和onShow()函数,每次进入后台(当用户点击左上角关闭,或者按了设备 Home 键离开微信)都会先执行页面中的onHide()函数再执行app.js中的onHide()函数,每次进入前台都会先执行app.js中onShow()函数再执行页面中的onShow()函数。

总结一下过程:
打开小程序 -> app.onLaunch -> app.onShow -> Page.onLoad -> Page.onShow -> Page.onReady

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

小程序运行机制

前台/后台状态

  1. 小程序启动后,界面被展示给用户,此时小程序处于前台状态。
  2. 当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态,小程序还可以运行一小段时间。
  3. 当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台。但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行。

小程序启动

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

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

小程序销毁时机

  1. 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁
  2. 在 iOS 上,当微信客户端在一定时间间隔内(目前是 5 秒)连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户 「该小程序可能导致微信响应变慢被终止」。建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。