小程序的生命周期

本文详细介绍了微信小程序的生命周期,包括启动状态(热启动、冷启动)、前后台状态转换、小程序销毁条件,以及对应的生命周期函数如onLaunch、onShow、onHide等。此外,还讲解了如何获取小程序启动时的参数和监听小程序状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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 以外的其他,当再次打开一个小程序逻辑如下:

上一次的场景当前打开的场景效果
AA保留原来的状态
BA清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页)
A 或 BB清空原来的页面栈,打开指定页面(相当于执行 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公众号自定义菜单
1036App 分享消息卡片
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

属性类型必填说明
onLaunchfunction生命周期回调——监听小程序初始化。
onShowfunction生命周期回调——监听小程序启动或切前台。
onHidefunction生命周期回调——监听小程序切后台。
onErrorfunction错误监听函数。
onPageNotFoundfunction页面不存在监听函数。
其他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

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

referrerInfo

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

返回有效 referrerInfo 的场景

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

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值