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();
                        
                        }
                    }
                })
            })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM