android工程师学习微信小程序笔记⑤ 小程序App

宿主环境提供了 App() 构造器用来注册一个程序App,需要留意的是App() 构造器必须写在项目根目录的app.js里,App实例是单例对象,在其他JS脚本中可以使用宿主环境提供的 getApp() 来获取程序实例。

微信官方文档App讲解

小程序App函数

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。

App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

// app.js
App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide () {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  onPageNotFound (options) {

  },
  onUnhandledRejection (options) {

  },
  globalData: 'I am global data'
})

onLaunch(Object object)

小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。

一般我们会在这里取一些启动参数,比如scene、目标路径、目标参数等等,也可以在这里上报埋点用来统计用户冷启动小程序的次数(比如电商小程序需要统计销售业绩、转化率等等)。

在这里插入图片描述

onShow(Object object)

小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。

onHide

小程序从前台进入后台时触发。也可以使用 wx.onAppHide 绑定监听。

onError(String error)

小程序发生脚本错误API 调用报错时触发。也可以使用 wx.onError 绑定监听。
一般我们可以在这里上报异常错误点,用来检测我们小程序的整体运行情况,比如说刚上线的功能突然错误日志增多,那么我们可能需要考虑回滚或者快速上线一个Bug Fix版本。

onPageNotFound(Object object)

小程序要打开的页面不存在时触发。也可以使用 wx.onPageNotFound 绑定监听。
注意事项请参考 wx.onPageNotFound。

一般,当触发了这个函数,也就意味着我们的Page页面可能出现问题或者路由路径编写错误,需要给到用户一个友好的兜底方案。

App({
  onPageNotFound(res) {
    // 搞一个兜底方案
    wx.redirectTo({
      url: 'pages/...'
    }) // 如果是 tabbar 页面,请使用 wx.switchTab
  }
})

onUnhandledRejection(Object object)

小程序有未处理的 Promise 拒绝时触发。也可以使用 wx.onUnhandledRejection 绑定监听。注意事项请参考 wx.onUnhandledRejection。

程序的生命周期和打开场景

首先,要有一个前后台的概念,跟android开发一样的逻辑。

初次进入小程序的时候,微信客户端初始化好宿主环境,同时从网络下载或者从本地缓存中拿到小程序的代码包,把它注入到宿主环境,初始化完毕后,微信客户端就会给App实例派发onLaunch事件,App构造器参数所定义的onLaunch方法会被调用。

进入小程序之后,用户可以点击右上角的关闭,或者按手机设备的Home键离开小程序,此时小程序并没有被直接销毁,我们把这种情况称为“小程序进入后台状态”,App构造器参数所定义的onHide方法会被调用。

当再次回到微信或者再次打开小程序时,微信客户端会把“后台”的小程序唤醒,我们把这种情况称为“小程序进入前台状态”,App构造器参数所定义的onShow方法会被调用。

我们可以看到,App的生命周期是由微信客户端根据用户操作主动触发的。为了避免程序上的混乱,我们不应该从其他代码里主动调用App实例的生命周期函数。

在微信客户端中打开小程序有很多途径:从群聊会话里打开,从小程序列表中打开,通过微信扫一扫二维码打开,从另外一个小程序打开当前小程序等,针对不同途径的打开方式,小程序有时需要做不同的业务处理,所以微信客户端会把打开方式带给onLaunch和onShow的调用参数options.

要获取最新的场景值说明请查看官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/app.html

需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

App({
   onLaunch: function () {
      console.log(“App生命周期函数——onLaunch函数”);
   },
   
   onShow: function () {
      console.log(“App生命周期函数——onShow函数”);
   },
   
   onHide: function () {
      console.log(“App生命周期函数——onHide函数”);
   },
   
   onError: function (msg) {
      console.log(“App生命周期函数——onError函数”);
   }
});
  • 首次启动小程序
    1)当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
    2)当小程序启动,或从后台进入前台显示,会触发 onShow

  • 当点击“后台”时,会触发以下函数
    1)当小程序从前台进入后台,会触发 onHide
    2)当点击“前台”时,就会再次触发onShow函数

原创文章 152 获赞 1013 访问量 40万+

猜你喜欢

转载自blog.csdn.net/dpjcn1990/article/details/105748649