1. 触发时机
1.1 onShow
-
触发时机:小程序从后台进入前台显示时触发。
-
具体场景:
- 用户从其他应用切换回小程序。
- 用户从手机桌面打开小程序。
- 用户从微信发现页面打开小程序。
-
触发频率:每次小程序从后台进入前台时都会触发。
1.2 onHide
-
触发时机:小程序从前台进入后台时触发。
-
具体场景:
- 用户点击手机的“返回”按钮,小程序被切换到后台。
- 用户从小程序切换到其他应用。
- 用户从小程序切换到手机桌面。
-
触发频率:每次小程序从前台进入后台时都会触发。
2. 用途
2.1 onShow
-
主要用途:
- 恢复状态:恢复页面的状态,例如重新加载数据或恢复用户操作。
- 更新数据:从服务器获取最新的数据,更新页面内容。
- 恢复动画:如果页面有动画效果,可以在
onShow中重新启动动画。 - 处理通知:处理在后台期间收到的通知,例如消息推送。
-
示例代码:
App({
onShow: function (options) {
console.log('小程序进入前台');
// 检查是否有新的消息推送
if (options.scene === 'new_message') {
this.updateMessages();
}
// 重新加载数据
this.loadData();
},
updateMessages: function () {
// 更新消息列表
},
loadData: function () {
// 从服务器加载最新数据
}
});
2.2 onHide
-
主要用途:
- 清理资源:释放不需要的资源,例如停止计时器、关闭网络请求等。
- 暂停操作:暂停一些不需要在后台运行的操作,例如暂停视频播放、暂停动画等。
- 保存状态:保存当前页面的状态,以便在
onShow时恢复。
-
示例代码:
App({
onHide: function () {
console.log('小程序进入后台');
// 停止视频播放
this.stopVideo();
// 清理计时器
clearInterval(this.timer);
},
stopVideo: function () {
// 停止视频播放
}
});
3. 参数
3.1 onShow
-
参数:
onShow函数接收一个参数options,包含小程序启动时的参数。options.path:页面路径。options.query:页面路径参数。options.scene:场景值,例如通过分享卡片打开小程序时的场景值。
-
示例代码:
App({
onShow: function (options) {
console.log('小程序进入前台', options);
if (options.scene === 'share') {
console.log('通过分享卡片打开小程序');
}
}
});
3.2 onHide
- 参数:
onHide函数不接收任何参数。
4. 使用场景
4.1 onShow
-
场景 1:用户从后台切换回小程序,需要更新页面数据。
- 示例:用户在后台期间有新的消息推送,需要在
onShow中更新消息列表。
- 示例:用户在后台期间有新的消息推送,需要在
-
场景 2:用户从其他应用切换回小程序,需要恢复页面状态。
- 示例:用户在后台期间进行了某些操作,需要在
onShow中恢复这些操作的状态。
- 示例:用户在后台期间进行了某些操作,需要在
4.2 onHide
-
场景 1:用户切换到其他应用,需要暂停一些操作。
- 示例:用户切换到其他应用时,暂停视频播放,避免浪费资源。
-
场景 2:用户切换到其他应用,需要清理一些资源。
- 示例:用户切换到其他应用时,清理计时器,避免计时器在后台继续运行。
5. 总结
onShow:用于处理小程序从后台进入前台时的逻辑,适合恢复状态、更新数据、处理通知等。onHide:用于处理小程序从前台进入后台时的逻辑,适合清理资源、暂停操作、保存状态等。