小程序前后台切换运行机制

时间:2024-04-07 17:46:00

首先微信官方文档有涉及一部分内容

https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html

点此跳转到微信官方文档


微信的方法
  • onShow() 页面显示/切入前台时触发。
  • onHide() 页面隐藏/切入后台时触发。 如 wx.navigateTo 或底部 tab 切换到其他页面,小程序切入后台等
前台、后台定义:

当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。

只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁

一个page的生命周期从onLoad开始,整个生命周期内onLoad、onReady、onUnload这三个事件仅执行一次,而onHide和onShow在每次页面隐藏和显示时都会触发。当用户手动触发左上角的退出箭头时,小程序仅触发app.onHide,下次进入小程序时会触发app.onShow以及当前page.onShow。仅当小程序在后台运行超过一定时间未被唤起、或者用户手动在小程序的控制栏里点击退出程序、或者小程序内存占用过大被关闭时,小程序被销毁,会触发app.onUnload事件。
一个完整的小程序执行的生命周期如下:
小程序前后台切换运行机制
小程序前后台切换运行机制

那么 跳出小程序,如何关闭后台运行?

每次关闭小程序,重新进入,不是进入主页面,而是我离开小程序时的页面。这个给我们的小程序造成了困扰~~如何实现真正退出小程序(点击左上角的关闭,下次进入是重新加载,进入主页面,而不是缓存页面~),求解

官方回答:

目前没有提供这样的能力。

有一个这样的想法:

判断小程序在全局方法中 判断 isOnHide() 也就是是否切换到后台, 如果切换到后台, 就调用定时器执行 某个方法. 如果回到 onShow() 也就是回到前台 ,就停止调用这个定时器. 以此来执行 某些在后台想要执行的代码: 比如需要在后台定时更新某些值. 有待验证;

参考资料:

http://www.wxapp-union.com/thread-3279-1-1.html
https://www.cnblogs.com/xiaohouzai/p/7674721.html