zoukankan      html  css  js  c++  java
  • mui或者uni退出app

    在安卓上可以使用

    //1.1
    var backButtonPress = 0;
    $.back = function(event) {
        backButtonPress++;
        if(backButtonPress > 1) {
            plus.runtime.quit();
        } else {
            plus.nativeUI.toast('再按一次退出应用');
        }
        setTimeout(function() {
            backButtonPress = 0;
        }, 1000);
        return false;
    };
    //1.2
    mui.back = function() {
        var btn = ["确定", "取消"];
        mui.confirm('确认关闭当前窗口?', 'Hello MUI', btn, function(e) {
            if(e.index == 0) {
                plus.runtime.quit();
            }
        });
    }

    H5+官方文档提供的plus.runtime.quit();对Android有效,但对iOS无效。但实际上,iOS系统原生提供了[[NSThread mainThread] exit];方法可以强制退出当前App,并且H5+支持调用iOS原生类的方法(通过plus.ios.importClass和invoke函数),于是就可以变相实现强制退出iOS的App了,代码如下:

    if (mui.os.ios)
    {
        const threadClass = plus.ios.importClass("NSThread");
        const mainThread = plus.ios.invoke(threadClass, "mainThread");
        plus.ios.invoke(mainThread, "exit");
    } else if (mui.os.android)
    {
        plus.runtime.quit();
    }

     我自己项目所使用的

    document.getElementById("tuic").addEventListener("tap", function(){
                    var old_back = mui.back;
                    var btnArray = ['是', '否'];
                    mui.confirm('您确定退出?', '', btnArray, function(e) {
                        //当选择是的时候执行
                        if(e.index == 0) {
                            //判断当前设备类型
                            if(mui.os.ios || mui.os.ipad){
                                plus.storage.clear();
                                const threadClass = plus.ios.importClass("NSThread");
                                const mainThread = plus.ios.invoke(threadClass, "mainThread");
                                plus.ios.invoke(mainThread, "exit");            
                            }else if(mui.os.android) {
                                
                                plus.storage.clear();
                                
                                // 获取当前webview窗口对象
                                var curr = plus.webview.currentWebview();
                                //获取所有已经打开的webview窗口
                                var wvs = plus.webview.all();
                                for(var i = 0, len = wvs.length; i < len; i++) {
                                    //关闭除当前页面外的其他页面
                                    if(wvs[i].getURL() == curr.getURL())
                                    //遇到当前页跳过
                                    continue;
                                    //非当前页执行关闭
                                    plus.webview.close(wvs[i]);
                                }
                                /*//打开login页面
                                plus.webview.open('Signin.html','Signin.html');*/
                                
                                //执行关闭当前页面
                                
                                curr.close();
                                old_back();//退出app
                            }else{
                                //runtime 运行环境管理模块执行退出 (一般运行不到这里)
                                plus.runtime.quit();
                            
                            }
                        }
                    })
                })
  • 相关阅读:
    Intersection Observer 观察元素何时进入或退出浏览器的视口
    JS防抖函数、节流函数工具类封装
    页面刷新时,如何保持原有vuex中的state信息
    vue具名插槽、作用域插槽的新写法
    vue-cli3+工具中,配置路径别名(vue.config.js)
    基于Vue-SSR优化方案归纳总结
    React组件设计:重新认识受控与非受控组件
    如何用 JavaScript 实现一个数组惰性求值库
    原生 js 中应该禁止出现的写法,以提高代码效率和安全性
    Javascript 实践中的命令模式
  • 原文地址:https://www.cnblogs.com/li-sir/p/12076360.html
Copyright © 2011-2022 走看看