Phonegap暂停事件表现不正常

时间:2014-09-04 23:13:03

标签: jquery cordova

我有一个使用jQuery Mobile构建的phonegap应用程序。

我已将事件监听器绑定到pauseresume,如下所示:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    document.addEventListener("pause", onPause, false);
    document.addEventListener("resume", onResume, false); 
}

现在,我已将alerts放入onPauseonResume函数中。这些警报会触发,但是我尝试从那些函数调用的任何函数都不起作用。我的一个函数initialize(基本上重启应用程序)在我的代码中从任何地方调用时都有效,但是从onPause调用时它不会触发。我尝试过的另一个功能是clearInterval,但这不起作用。

最重要的是,在应用程序实际恢复之前,pause事件似乎不会触发,因为警报在重新打开应用程序之前不会触发。

我正在尝试强制该应用在暂停/发送到后台时关闭/注销,但无效。

我有任何明显的错误,或者我错过了什么?

更新 我没有触发函数的问题是由于范围可变(愚蠢的错误)然而,在应用程序恢复之后,暂停事件仍会触发

2 个答案:

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

也许有帮助。