安卓开发者的小程序入门整理 页面跳转&生命周期

本文深入探讨了微信小程序的页面生命周期及整体运行机制,包括不同跳转方式下生命周期函数的调用顺序,并对比了与安卓Activity的不同之处。

写在前面

  • 小程序文档对于生命周期没有一个很直观的解答
  • 加上小程序入口实在是又杂又多 关闭逻辑也不是很直观
  • 所以挑出来记录一下

页面的生命周期

页面主要的生命周期函数有
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
这个和安卓Activity的逻辑明显不一致
其实小程序的所有页面的初始变量在小程序生存时就已经初始化了
而在在之后的操作中除非整个小程序挂掉
是不会再有二次初始化的
为了绕开这个问题导致别的莫名其妙建议所有的变量都在onLoad中进行初始化

小程序页面生命周期

这里主要选择 onLaunch onShow onHide 来进行总结

点击Home键(IDE上的切后台)

其中打印的那条JSON是 onShow带过来的 包含了路径和场景值
(场景值是一个很重要的概念 点击了解 )
开发过程中会发现返回键、右上角的关闭、分享 都是这套逻辑
对。右上角的关闭也是 回到后台
那小程序真正意义上的关闭又是如何执行的呢
这里选用 1.4.0的版本去讲 运行机制

小程序没有重启的概念
当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后
(目前是5分钟)会被微信主动销毁
当短时间内(5s)连续收到两次以上收到系统内存告警,会进行小程序的销毁

再次打开逻辑

小程序判定是否二次重载很大程度上是根据场景值去判定
这个逻辑和Native App也是不一样的
个人的解决方案是在 App.jsonShow
里根据自己的产品逻辑去对特定情况场景值进行判定操作
(也是挺坑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值