gpt4 book ai didi

javascript - Phonegap/Cordova 暂停事件在 android 的恢复上触发;结果无法关闭音频

转载 作者:行者123 更新时间:2023-12-01 11:25:37 25 4
gpt4 key购买 nike

我正在开发一个使用 Phonegap Media 插件播放音频的 Phonegap 应用程序。当我按下我的 android 设备(KitKat 4.4)上的主页按钮或屏幕锁定按钮时,应用程序会正常进入后台,但音频不会关闭,因为没有调用暂停事件。只有当我恢复应用程序时,暂停事件才会运行,而我关闭音频的代码最终会运行。 resume 事件也在此之后运行。

阅读有关暂停事件的 Phonegap 文档,有一个关于 iOS Quirks 的注释:

“在暂停处理程序中,对 Cordova API 或通过 Objective-C 的 native 插件的任何调用以及任何交互式调用(例如警报或 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"/>

最佳答案

当我为我的论文开发一个 mp3 播放器时,我在第一个 android 版本中遇到了同样的问题。
问题是我没有创建线程,因此停止函数不是优先执行的。

我知道我的论文不在 Cordova,但阅读 Cordova 文档

Threading. JavaScript in the WebView does not run on the UI thread. It runs on the 
WebCore thread

来自 Cordova Documentation

还看 Android Documentation ,你有没有想过实现一个类来处理适合 Cordova 插件的多线程和任务队列?

关于javascript - Phonegap/Cordova 暂停事件在 android 的恢复上触发;结果无法关闭音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com