【发布时间】:2014-12-01 06:30:47
【问题描述】:
我正在开发一个使用 Phonegap Media 插件播放音频的 Phonegap 应用。当我按下我的 android 设备(KitKat 4.4)上的主页按钮或屏幕锁定按钮时,应用程序会正常进入后台,但音频不会关闭,因为没有调用暂停事件。只有当我恢复应用程序时才会运行暂停事件,并且我关闭音频的代码最终会运行。 resume 事件也会在此之后运行。
阅读有关暂停事件的 Phonegap 文档,有一个关于 iOS Quirks 的注释:
“在暂停处理程序中,对 Cordova API 或通过 Objective-C 的本机插件的任何调用以及任何交互式调用(例如警报或 console.log())都不起作用。它们仅在以下情况下被处理应用程序在下一个运行循环中恢复。”
这与我在 Android 设备上看到的非常相似,但我想知道这是否是同一个问题。我真的需要修复或解决方法,因为当用户暂停应用程序时,无法关闭音频。
这是我添加暂停事件监听器的代码:
document.addEventListener('deviceready', on_device_ready, false);
function on_device_ready()
{
document.addEventListener('pause', on_pause, false);
document.addEventListener('resume', on_resume, false);
}
更新:我想我已经解决了, 虽然我对解决方案不太满意。我已将 Phonegap config.xml 变量 KeepRunning 设置为 false。我设置为 true,现在它会在应该的时候获得暂停事件。我觉得我应该能够阻止我的应用程序在后台运行,并且还可以预先运行一些暂停代码。
无论如何,这里是我正在谈论的 config.xml 行:
<preference name="KeepRunning" value="true"/>
【问题讨论】:
-
暂停后以编程方式停止应用怎么样?
-
有趣——这在 Cordova 中通常是一个大问题。不知道这是否适用于 iOS。
-
哦,您也许应该将该解决方案放在下面作为答案。完全允许。
标签: javascript android cordova