目录
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
进行判断。
参考自:微信小程序开发文档