科尔多瓦:暂停赛事没有开火

P.H*_*son 5 javascript android cordova

由于某种原因,暂停事件不会在应该触发时触发.

如果我按下手机上的主页按钮,则应该触发暂停事件,这应该暂停音乐.但相反,它继续播放它.

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

当我离开应用程序时,为什么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');
}
Run Code Online (Sandbox Code Playgroud)

lea*_*lay 9

我想我有同样的问题.我已将Phonegap config.xml变量KeepRunning设置为false.我设置为true,现在它应该得到暂停事件.这是我正在讨论的config.xml行:

<preference name="KeepRunning" value="true"/>
Run Code Online (Sandbox Code Playgroud)

我认为如果应用程序没有运行,那么暂停事件代码将无法运行,直到应用程序再次运行.我猜KeepRunning的优先级高于监听暂停事件.获得一个正确的解释,为什么这是完全在较低的水平将是有趣的.


qef*_*zec 3

你在 iOS 上测试吗?我发现这是 iOS 上的“正常”行为,Phonegap 文档也指出

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

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

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

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