之前有段时间发现 安卓机子安装了uniapp的程序包 有时候退出重新进入会白屏,而且频率很高
往社区搜了相关资料。原贴如下 https://ask.dcloud.net.cn/article/36292
这里采用了第一种方式,不过需要注意的是,不能监听两次退出事件后再断开长链接。当触发一次 onBackPress 回调 就断开,为了防止用户误操作 可以设置一个定时器两秒后重开长链接。
在 main.js文件中定义全局周期函数 供每个page页对象继承
Vue.mixin({
//相关周期函数 全局方法 全局变量 定义
});
代码如下
onBackPress() {
console.log("onBackPress");
//https://ask.dcloud.net.cn/article/36292 部分安卓机使用websocket后退出重进导致安卓白屏处理
if (this.g.sysinfo.provider == 1) {
var pages = getCurrentPages();
var page = pages[pages.length - 1];
var navs = ['order/order', 'orders/orders', 'user/user', 'user/money/details'];
if (page && page.route) {
for (var i = 0; i < navs.length; i++) {
if (page.route.indexOf(navs[i]) != -1) {
console.log("退出时清除 长链接");
api.closeWebSocket();
setTimeout(function() {
api.websoket();
}, 2000);
}
}
}
}
}
uniapp每一个page页触发退出操作都会执行一次onBackPress,因此我们需要在首页或者导航页处理相关操作