在App.js的onLaunch方法中写了两个方法,一个wx.onAppShow,一个wx.onAppHide,在wx.onAppShow的监听方法中执行了wx.offAppHide方法
按照预想,进行前后台切换,会先触发一次小程序切后台事件,然后再触发小程序切前台事件,这个时候会触发wx.offAppHide方法取消掉对切后台事件的监听,所以后面切后台并不会进行触发回调事件
//app.js
App({
onLaunch: function() {
wx.onAppShow(function(e){
if (e.scene==1001){
wx.offAppHide(function(){
})
}
})
wx.onAppHide(function(){
console.log('111');
})
}
})
我这里测试没问题。
首先,你的代码有 bug,在你首次打开的时候,wx.onAppShow 的回调函数会晚于 wx.onAppHide,所以你的 wx.onAppHide 压根是没用的。
其次,你要注意 e.scene 是否真的是 1001。
你好,能否给段你测试用的代码片段给我看看
就是你的这个代码片段,正确从1001场景进入的话,按照你的代码逻辑,onAppHide 挂上后会立即被 offAppHide,你可以试试
我后面已经去掉了这个判断了,改为直接去执行offAppHide,这样意味着onAppHide便不会被执行,但是在开发工具上,多次点击切后台和切前台,onAppHide依旧多次被触发
可以了,为啥去掉回调函数就行了呢?
是这样的,这个的设计跟 addEventListener/removeEventListener 是类似的,你用这种方式写:
const func = () => {}
wx.onAppHide(func)
wx.offAppHide(func)
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
App({
onLaunch:
function
() {
wx.onAppShow(
function
(e){
if
(e.scene==1001){
wx.offAppHide(
function
(){
})
}
})
wx.onAppHide(
function
(){
console.log(
'111'
);
})
}
})
上面就是复现的代码,只是在app.js写了,然后是用开发工具测试的,模拟的手机是iphone6
麻烦按照教程指引来提供下代码片段
https://developers.weixin.qq.com/s/axjSpbmK7T8g
意思是首次切换后台再从【最近使用】进入小程序的时候,触发wx.onAppShow和wx.offAppHide,后续再从后台进入前台不应该再触发wx.onAppHide?
是的,按我的理解应该是这样