我有一个使用jQuery Mobile构建的phonegap应用程序。
我已将事件监听器绑定到pause
和resume
,如下所示:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
}
现在,我已将alerts
放入onPause
和onResume
函数中。这些警报会触发,但是我尝试从那些函数调用的任何函数都不起作用。我的一个函数initialize
(基本上重启应用程序)在我的代码中从任何地方调用时都有效,但是从onPause
调用时它不会触发。我尝试过的另一个功能是clearInterval
,但这不起作用。
最重要的是,在应用程序实际恢复之前,pause
事件似乎不会触发,因为警报在重新打开应用程序之前不会触发。
我正在尝试强制该应用在暂停/发送到后台时关闭/注销,但无效。
我有任何明显的错误,或者我错过了什么?
更新 我没有触发函数的问题是由于范围可变(愚蠢的错误)然而,在应用程序恢复之后,暂停事件仍会触发。
答案 0 :(得分:4)
我想我遇到了同样的问题。我已将Phonegap config.xml变量KeepRunning设置为false。我设置为true,现在它应该在它应该的时候获得暂停事件。这是我正在讨论的config.xml行:
<preference name="KeepRunning" value="true"/>
我认为如果应用程序没有运行,那么暂停事件代码将无法运行,直到应用程序再次运行才有意义。我猜KeepRunning的优先级高于监听暂停事件。获得一个正确的解释,为什么这是完全在较低的水平将是有趣的。
答案 1 :(得分:1)
我记得从前段时间开始,我需要将onResume
函数与setTimeout和时间值零包装起来,以便相应调用,尽管我从来没有弄明白为什么。也许onPause
也是如此。
尝试这样:
function onPause() {
setTimeout(function() {
alert("onPause");
}, 0);
};
也许有帮助。