小程序的生命周期整理

1. 应用生命周期 App

App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。

在这里插入图片描述关于小程序的退出:当用户点击小程序左上角关闭,或者按设备Home键离开微信,小程序并没有直接销毁,而是触发onHide方法进入了后台,短时间内当再次进入微信或者再次打开小程序,小程序会从后台状态进入前台,此为“热启动”。注意当小程序进入后台状态一定时间后,或者系统资源占用过高,微信会真正销毁小程序。用户第一次进入小程序或者在小程序销毁后再次进入小程序是为“冷启动”。

  • 小程序的冷启动:小程序在冷启动时会依次触发onLaunch—>onShow
  • 小程序的热启动:小程序在热启动时会触发onShow
  • 小程序关闭时:即小程序从前台进入后台时触发onHide

这是小程序的生命周期,触发的是App()中的方法,实际开发中,我们往往会有多个页面,每个页面也有各自的生命周期,所以在关闭小程序时会先执行页面的生命周期函数,然后执行小程序的生命周期函数,同理在小程序启动或者有后台状态进入前台时会执行小程序的生命周期函数,然后执行页面的生命周期函数,从而打开小程序打开页面。

2. 页面生命周期

Page() 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。
在这里插入图片描述
生命周期函数

  • onLoad: 页面加载
    一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。
  • onShow: 页面显示(从后台到前台)
    每次打开页面都会调用一次。
  • onReady: 页面初次渲染完成
    一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。 对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。详见生命周期
  • onHide: 页面隐藏(从前台到后台)
    当navigateTo或底部tab切换时调用。
  • onUnload: 页面卸载
    当redirectTo或navigateBack的时候调用。
  • 其中 ,onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 ,
    path,query和scene,path是打开小程序的路径,query是打开小程序页面url的参数,scene是打开小程序的场景值; 更多场景值可以查看
    https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/scene.html

3. 应用生命周期和页面生命周期

在这里插入图片描述
(1)小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
(2)当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
(3)当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。

4. 路由变化对页面生命周期的影响

在小程序中所有页面的路由全部由框架进行管理,框架以栈的形式维护当前的所有页面,当发生路由切换的时候,页面栈的表现如下:
在这里插入图片描述
对于路由的触发方式以及页面生命周期函数如下:
在这里插入图片描述
Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面,C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):
在这里插入图片描述
另外, 小程序为我们提供了全局数据管理 ,在page页面中通过getApp()方法获取app.js实例 例如:
我们在app.js通过定义一个globalData数据对象

App({
  globalData: {
    userInfo: null
  }
})
// other.js
var appInstance = getApp()
console.log(appInstance.globalData)

注意:
App()必须在 app.js中注册,且不能注册多个。
不要在定义于 App()内的函数中调用 getApp(),使用 this就可以拿到 app实例。
不要在 onLaunch的时候调用 getCurrentPages(),此时 page还没有生成。
通过 getApp()获取实例之后,不要私自调用生命周期函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值