生命周期
043小程序运行机制
小程序启动可以分为两种情况,一种是冷启动,一种是热启动。
- 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动。
- 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态。
前台和后台状态:
- 小程序启动后,界面被展示给用户,此时小程序处于「前台」状态。
- 当用户「关闭」小程序时,小程序并没有真正被关闭,而是进入了「后台」状态,当用户再次进入微信并打开小程序,小程序又会重新进入「前台」状态。
- 挂起:小程序进入「后台」状态一段时间后(5秒),微信停止小程序JS线程执行,小程序进入「挂起]状态,当开发者使用了后台播放音乐、后台地理位置等能力时,小程序可以在后台持续运行,不会进入到挂起状态。
- 消毁:如果用户很久没有使用小程序,或者系统资源紧张,小程序会被销毁,即完全终止运行。当小程序进入后台并被[挂起]后,如果很长时间(目前是30分钟)都未再次进入前台,小程序会被销段当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。
044小程序更新机制
在访问小程序时,微信会将小程序代码包缓存到本地。
开发者在发布了新的小程序版本以后,微信客户端会检查本地缓存的小程序有没有新版本,并进行小程序代码包的更新。
小程序的更新机制有两种:启动时同步更新和启动时异步更新
- 启动时同步更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有更新,下次小程序启动时会同步进行更新,更新到最新版本后再打开小程序。如果用户长时间未使用小程序时,会强制同步检查版本更新。
- 启动时异步更新:在启动前没有发现更新,小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包,将新版本的小程序在下一次冷启动进行使用,当前访问使用的依然是本地的旧版本代码。
在启动时异步更新的情况下,如果开发者希望立刻进行版本更新,可以使用wx.getUpdateManaqerAPI进行处理。在有新版本时提示用户重启小程序更新新版本。
045小程序生命周期介绍
- 应用生命周期是指应用程序进程从创建到消亡的整个过程。
- 小程序的生命周期指的是小程序从启动到销毁的整个过程。
一个小程序完整的生命周期由应用生命周期、页面生命周期和组件生命周期三部分来组成。
小程序生命周期伴随着一些函数,这些函数由小程序框架本身提供,被称为生命周期函数,生命周期函数会按照顺序依次自动触发调用帮助程序员在特定的时机执行特定的操作,辅助程序员完成一些比较复杂的逻辑。
046应用生命周期
应用生命周期通常是指一个小程序从启动→运行→销毁的整个过程。
应用生命周期伴随着一些函数,我们称为应用生命周期函数,应用生命周期函数需要在app.is文件的App()方法中进行定义,App()方法必须在app.js中进行调用,主要用来注册小程序。
应用生命周期函数由onLaunch、onShow、onHide三个函数组成。
从小程序生命周期的角度来看,我们一般讲的「启动」专指冷启动,热启动一般被称为后台切前台。
当进行冷启动时,才会触发onLaunch钩子函数。
如果是热启动,不会触发onLaunch钩子函数,会触发onShow钩子函数。
因此onLaunch(全局只触发一次)
047页面生命周期
页面生命周期就是指小程序页面从加载→运行→销毁的整个过程。
页面生命周期函数需要在Page()方法进行定义。
048生命周期两个细节
- tabBar页面之间相互切换,页面不会被销毁
- 点击左上角,返回上一个页面,会销毁当前页面