小程序的生命周期

目录

1 小程序的基本状况

1.1 小程序启动

1.2 前台/后台状态

1.3 再次打开小程序

1.4 小程序销毁

2 小程序的生命周期

2.1 App(Object object)的参数说明

2.2 onLaunch(Object object)

2.3 onShow(Object object)

2.4 onHide()

2.5 onError(String error)

2.6 onPageNotFound(Object object)

3 获取小程序的状态

3.1 Object wx.getLaunchOptionsSync()


1 小程序的基本状况

1.1 小程序启动

  • 热启动:在一定时间内再次打开该小程序,无需重启小程序,只需将后台态的小程序切换到前台。
  • 冷启动:首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动

1.2 前台/后台状态

  • 后台:点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时。
  • 前台:当用户再次进入微信或再次打开小程序。

1.3 再次打开小程序

A. 打开首页: 场景值有以下几项:

场景值ID 说明
1001 发现栏小程序主入口,「最近使用」列表
1019 微信钱包
1022 聊天顶部置顶小程序入口
1023 安卓系统桌面图标
1038 从另一个小程序返回
1056 音乐播放器菜单

B. 打开小程序指定的某个页面,场景值为除 A 以外的其他,当再次打开一个小程序逻辑如下:

上一次的场景 当前打开的场景 效果
A A 保留原来的状态
B A 清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页)
A 或 B B 清空原来的页面栈,打开指定页面(相当于执行 wx.reLaunch 到指定页)

场景值列表

场景值ID 说明
1001 发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表)
1005 微信首页顶部搜索框的搜索结果页
1006 发现栏小程序主入口搜索框的搜索结果页
1007 单人聊天会话中的小程序消息卡片
1008 群聊会话中的小程序消息卡片
1011 扫描二维码
1012 长按图片识别二维码
1013 扫描手机相册中选取的二维码
1014 小程序模板消息
1017 前往小程序体验版的入口页
1019 微信钱包(微信客户端7.0.0版本改为支付入口)
1020 公众号 profile 页相关小程序列表
1022 聊天顶部置顶小程序入口(微信客户端6.6.1版本起废弃)
1023 安卓系统桌面图标
1024 小程序 profile 页
1025 扫描一维码
1026 发现栏小程序主入口,「附近的小程序」列表
1027 微信首页顶部搜索框搜索结果页「使用过的小程序」列表
1028 我的卡包
1029 小程序中的卡券详情页
1030 自动化测试下打开小程序
1031 长按图片识别一维码
1032 扫描手机相册中选取的一维码
1034 微信支付完成页
1035 公众号自定义菜单
1036 App 分享消息卡片
1037 小程序打开小程序
1038 从另一个小程序返回
1039 摇电视
1042 添加好友搜索框的搜索结果页
1043 公众号模板消息
1044 带 shareTicket 的小程序消息卡片 详情
1045 朋友圈广告
1046 朋友圈广告详情页
1047 扫描小程序码
1048 长按图片识别小程序码
1049 扫描手机相册中选取的小程序码
1052 卡券的适用门店列表
1053 搜一搜的结果页
1054 顶部搜索框小程序快捷入口(微信客户端版本6.7.4起废弃)
1056 聊天顶部音乐播放器右上角菜单
1057 钱包中的银行卡详情页
1058 公众号文章
1059 体验版小程序绑定邀请页
1064 微信首页连Wi-Fi状态栏
1067 公众号文章广告
1068 附近小程序列表广告(已废弃)
1069 移动应用
1071 钱包中的银行卡列表页
1072 二维码收款页面
1073 客服消息列表下发的小程序消息卡片
1074 公众号会话下发的小程序消息卡片
1077 摇周边
1078 微信连Wi-Fi成功提示页
1079 微信游戏中心
1081 客服消息下发的文字链
1082 公众号会话下发的文字链
1084 朋友圈广告原生页
1089 微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)
1090 长按小程序右上角菜单唤出最近使用历史
1091 公众号文章商品卡片
1092 城市服务入口
1095 小程序广告组件
1096 聊天记录
1097 微信支付签约页
1099 页面内嵌插件
1102 公众号 profile 页服务预览
1103 发现栏小程序主入口,「我的小程序」列表(基础库2.2.4版本起废弃)
1104 微信聊天主界面下拉,「我的小程序」栏(基础库2.2.4版本起废弃)
1129 微信爬虫访问 详情

1.4 小程序销毁

  • 当小程序进入后台,超过一定时间后,小程序会被微信主动销毁。
  • 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。
  • 可以使用 wx.onMemoryWarning 监听内存告警事件,必要时可以进行内存清理。

 


2 小程序的生命周期

2.1 App(Object object)的参数说明

Object object

属性 类型 必填 说明
onLaunch function 生命周期回调——监听小程序初始化。
onShow function 生命周期回调——监听小程序启动或切前台。
onHide function 生命周期回调——监听小程序切后台。
onError function 错误监听函数。
onPageNotFound function 页面不存在监听函数。
其他 any 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问


使用案例:

App({
  onLaunch(options) {
    // 初始化小程序时的业务逻辑
  },
  onShow(options) {
    // 切换到前台时的业务逻辑
  },
  onHide() {
    // 切换到后台时的业务逻辑
  },
  onError(msg) {
    // 错误处理
  },
 myFunction(){
    // 业务逻辑
  }
})

2.2 onLaunch(Object object)

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

参数:与 wx.getLaunchhOptionsSync一致

2.3 onShow(Object object)

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

参数:与 wx.onAppShow一致

2.4 onHide()

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

2.5 onError(String error)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 wx.onError 绑定监听。

参数:与wx.onError一致

2.6 onPageNotFound(Object object)

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

参数:与wx.onPageNotFound一致

 


3 获取小程序的状态

3.1 Object wx.getLaunchOptionsSync()

获取小程序启动时的参数。与App.onLaunch的回调参数一致。

Object

属性 类型 说明
path string 启动小程序的路径
scene number 启动小程序的场景值
query Object 启动小程序的 query 参数
shareTicket string shareTicket,官方文档说明
referrerInfo Object 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。(参见后文注意)

referrerInfo

属性 类型 说明
appId string 来源小程序、公众号或 App 的 appId
extraData Object 来源小程序传过来的数据

返回有效 referrerInfo 的场景

场景值 场景 appId含义
1020 公众号 profile 页相关小程序列表 来源公众号
1035 公众号自定义菜单 来源公众号
1036 App 分享消息卡片 来源App
1037 小程序打开小程序 来源小程序
1038 从另一个小程序返回 来源小程序
1043 公众号模板消息 来源公众号

注:在无referrerInfo的时候会返回 undefined,可以使用 options.referrerInfo && options.referrerInfo.appId 进行判断。

 

参考自:微信小程序开发文档

你可能感兴趣的:(小程序)