科尔多瓦 - 睡眠模式打破后退按钮

时间:2014-05-26 16:16:58

标签: android cordova back-button

我使用Cordova并得到一个iddue,至少在android(在2和4上测试)

我使用addListener

覆盖了backButton行为
document.addEventListener("backbutton", backbuttonListener, false);

function backbuttonListener(){
    if(Windows.currentWindow != null){
        Windows.currentWindow.hide();
    }
    else if(Container.currentPrint.page == 'main'){
        if(isMob) navigator.app.exitApp();
    }
    else{
        Container.setContent(Main_page);
    }
}

然而,在长时间处于睡眠模式(应用程序未关闭)后,它工作得很好,当用户唤醒他的手机时,列表工作者不再工作,并且后退按钮在按下时不执行任何操作。这太烦人了。

有人得到解释吗?

编辑:睡觉后setTimeout也出现问题。该函数不再被调用 我是唯一一个这样的人吗? 编辑2 也许它是相关的,我用setTimeout得到了一个redondant任务:

function initialize_cron(){
if(isMob){
    if(navigator.connection.type != 'none'){
        somefunc()
    }
}
setTimeout(function(){
    initialize_cron()
},300000);

}

2 个答案:

答案 0 :(得分:1)

我所能推荐的是您通过chrome://inspect在Chrome DevTools中重现错误和断点。看看堆栈,看看为什么事件没有被解雇。我试图重现它并且无法解决同样的问题。

也许值得检查一下,当应用程序被唤醒时,听众是否仍然出现在document上。

答案 1 :(得分:1)

好的,我明白了。

事实上,setTimeout / intervall存在一个大延迟的错误。我试图删除我的'cron',即使经过很长时间的睡眠,后退按钮事件和设置超时,所有工作都很好。 所以我这样做取代:

var initialize_cron = function(){
if(cron == 0){
    if(isMob){
        if(navigator.connection.type != 'none'){
            somefunc
        }
    }
}
    setTimeout(function(){
        if (cron == 30)
            cron = 0
        else
            cron++
        initialize_cron()
    // },300000);
    },10000);
}