• 0
  • 0

uniapp 部分安卓机使用websocket后退出重进导致安卓白屏处理

2019-09-11 50 0 admin 所属分类:Hbuilder

之前有段时间发现 安卓机子安装了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,因此我们需要在首页或者导航页处理相关操作

返回顶部