我使用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);
}
答案 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);
}