Cordova:暂停事件而不启动

Cordova: Pause event not firing

本文关键字:启动 事件 暂停 Cordova      更新时间:2023-09-26

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

如果我按下手机上的主页按钮,就会在这里触发暂停事件,从而暂停音乐。但相反,它一直在播放。

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

为什么我离开应用程序时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');
}

我想我遇到了和你完全一样的问题。我已经将Phonegap config.xml变量KeepRunning设置为false。我设置为true,现在它在应该的时候得到了暂停事件

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

我认为,如果应用程序没有运行,那么在应用程序再次运行之前,暂停事件代码不会运行,这是有道理的。我想KeepRunning比监听暂停事件具有更高的优先级。如果能得到一个恰当的解释,解释为什么这只是一个较低的水平,那将是很有趣的。

你在iOS上测试吗?我发现这是iOS上的"正常"行为,正如Phonegap文档所指出的:

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

因此,根据医生的说法,在关闭应用程序时,你永远不会看到alert('paused)

然而,我的观察结果是,代码是在应用程序暂停时执行的,只有控制台打印会延迟到下一次应用程序重新启动。

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