写在前面
- 小程序文档对于生命周期没有一个很直观的解答
- 加上小程序入口实在是又杂又多 关闭逻辑也不是很直观
- 所以挑出来记录一下
页面的生命周期
页面主要的生命周期函数有
onLoad
onReady
onShow
onHide
onUnload
下面讲根据几种不同的跳转方式看他们依次是怎么调用的 wx.navigateTo
A -> B
wx.redirectTo
A -> B
wx.navigateBack
A -> B -> C -> A (delta = 2)
以上看上去都没有什么问题
现在我在B里添加一个变量i
初始为0 每跳转一次自增并在onShow
里面打印出来 代码如下
var TAG = "Page B " var i = 0 Page({ onclick: function () { i++ wx.navigateTo({ url: '../C/C', success: function (res) { }, fail: function (res) { }, complete: function (res) { }, }) }, onLoad: function (options) { console.log(TAG + "onLoad" + " i = " + i) },复制代码
A -> B -> C -> A -> B
这里的i
是1而不是0
onLoad
中进行初始化 小程序页面生命周期
这里主要选择 onLaunch
onShow
onHide
来进行总结
点击Home键(IDE上的切后台)
onShow
带过来的 包含了路径和场景值 (场景值是一个很重要的概念 ) 开发过程中会发现返回键、右上角的关闭、分享 都是这套逻辑 对。右上角的关闭也是 回到后台 那小程序真正意义上的关闭又是如何执行的呢 这里选用 去讲 运行机制 小程序没有重启的概念
当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁 当短时间内(5s)连续收到两次以上收到系统内存告警,会进行小程序的销毁
再次打开逻辑
小程序判定是否二次重载很大程度上是根据场景值去判定
这个逻辑和Native App也是不一样的 个人的解决方案是在App.js
的 onShow
里根据自己的产品逻辑去对特定情况场景值进行判定操作 (也是挺坑)