这是个BUG
我在app.js中的onshow 函数中做了一些逻辑,执行reLaunch方法,在IOS上一点问题没有,在案桌上就报错,can not invoke reLaunch in background 求解?? 又是区别对待咯,请开发大哥们给个明路吧
我不明白的是,既然不能再后台的时候调用,那么onShow里面的代码是在后台执行的?那onShow意义何在?并且IOS机型没有问题,单单是Android机型有问题,这更让我费解。求看到,求关注,求回复,我已经被逼的走投无路了…
app.js
onShow () {
// 检测app上次启动时间, 如果和当前日期不匹配, 则清空缓存, 重载数据
let appLastLaunchTime = util.getStorageData('appLastLaunchTime')
if (util.getNowDateString() !== appLastLaunchTime) {
util.setStorageData('appLastLaunchTime', util.getNowDateString())
this.reLaunchApp()
}
},
reLaunchApp () {
wx.reLaunch({
url: '/pages/home/home'
})
},
@LastLeaf 这个还真有的,我反馈过这个问题 同事的IPhone 7 不论啥时候打开小程序都不会刷新,用户中也有一定比例的反馈不会刷新的问题。 于是我才出此下策…
我看过文档了,说是5分钟的时间,但实际上不是,很多手机根本不会回收。还有置顶的小程序也不会回收
你好,目前请不要在 onShow 中直接调用 reLaunch 。我们会尝试调整优化一下。
那么onShow里面的代码是在后台执行的
是的,目前页面首次 onShow 的时机是紧接着 onLoad 的,它可能出现在页面完全进入之前。
@LastLeaf THX
我之所以会在onShow里面加reLaunch 就是为了解决有时候 ___小程序不会被内存回收导致页面的数据一直不会更新 ___的问题。我的做法是在APP onLaunch记录一个日期到Storage,下次在app onShow的时候拿到当前日期去和上次的时间比对,不是同一天(我们数据一天更新一次)就模拟小程序被回收的场景,关闭所有页面回到首页重新拉取数据。
于是就碰到了上述问题,那么介于此,我貌似除了放在app onShow去检测,没有更好的办法了… 不知道在每个页面的onShow去检测会不会有效果。如果这个也不行,真是没辙了,如果大神有更好的方案,不吝赐教!