目录
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 进行判断。
参考自:微信小程序开发文档
本文详细介绍了微信小程序的生命周期,包括启动状态(热启动、冷启动)、前后台状态转换、小程序销毁条件,以及对应的生命周期函数如onLaunch、onShow、onHide等。此外,还讲解了如何获取小程序启动时的参数和监听小程序状态变化。
7446

被折叠的 条评论
为什么被折叠?



