在 Page 的 onShow 生命周期函数中,调用 wx.reLaunch
当小程序已经存在于后台时,会报错 fail can not invoke relaunch in background
解决方案是延时处理,具体延时时间需要取个经验值(比如 100ms),需根据设备性能自行尝试。
我纳闷地是,既然从后台切换至前台的操作还未完成,为什么要触发 APP 的 onShow 和 Page 的 onShow 生命周期函数?
为什么不能等切换操作结束,小程序真的进入前台后再触发 onShow 生命周期函数?
我在小程序启动,设置一个中间页面为首页,进行页面路由跳转。
这个路由页面,很快就会跳走,可以认为是一次性的,从不会被放入后台。
因此在 onReady 中调用 wx.reLaunch 也能满足业务要求。
onready只触发一次,如果是从后台切回好像不能触发吧。
文档中并未说明 onshow 触发时,仅代表即将进入前台。之前根据其命名,猜测是已经进入前台。 文档还是欠缺很多细节。
你理解的对,onshow是从后台进入前台就会触发,onready是渲染完,具体可看生命周期的流程图
发现在 onReady 生命周期函数中,可调用成功。
估计小程序的 onShow 对应 Android 的 onResume
估计小程序的 onReady 对应 Android 的 onWindowFocusChanged