【问题标题】:Cordova: Pause event not firingCordova:暂停事件未触发
【发布时间】:2014-09-13 09:55:01
【问题描述】:

由于某种原因,暂停事件没有在应该触发的时候触发。

如果我按下手机上的主页按钮,这就是应该触发暂停事件的地方,它应该暂停音乐。但它却一直在播放。

但是当我再次打开我的应用程序时,它突然暂停然后恢复。所以当我返回应用程序时它会触发这两个事件。

为什么我离开应用时 onPause 没有触发?

我有以下代码:

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);

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

function onPause() {
    PauseMusic();
    alert('paused');
}

function onResume() {
    ResumeMusic();
    alert('resumed');
}

【问题讨论】:

    标签: javascript android cordova


    【解决方案1】:

    我想我遇到了与您完全相同的问题。我已将 Phonegap config.xml 变量 KeepRunning 设置为 false。我设置为 true,现在它会在应该的时候获得暂停事件。这是我正在谈论的 config.xml 行:

    <preference name="KeepRunning" value="true"/>
    

    我认为如果应用程序没有运行,那么暂停事件代码在应用程序再次运行之前不会运行是有道理的。我猜 KeepRunning 的优先级高于收听暂停事件。得到一个关于为什么这恰好处于较低水平的正确解释会很有趣。

    【讨论】:

    【解决方案2】:

    您在 iOS 上进行测试吗?我发现这是 iOS 上的“正常”行为,还有 Phonegap 文档points out

    在暂停处理程序中,对 Cordova API 或本机的任何调用 通过 Objective-C 的插件和任何插件都不起作用 交互式调用,例如警报或 console.log()。他们只是 当应用程序恢复时,在下一个运行循环中处理。

    因此,根据文档,您在关闭应用程序时永远不会看到 alert('paused)

    但是,我的观察是代码是在应用暂停时执行的,只有控制台打印会延迟到下一次应用重启。

    如果您的PauseMusic() 调用未执行,您可能应该发布更多代码并查看是否存在问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多