lea*_*lay 18 javascript android cordova
我正在开发一个使用Phonegap Media插件播放音频的Phonegap应用程序.当我按下Android设备上的主页按钮或屏幕锁定按钮(KitKat 4.4)时,应用程序会进入后台,但音频不会因为暂停事件未被调用而关闭.只有当我恢复应用程序时才会运行暂停事件,并且我的关闭音频的代码最终会运行.简历事件也在此之后运行.
阅读关于暂停事件的Phonegap文档,有关于iOS Quirks的注释:
"在暂停处理程序中,对Cordova API或通过Objective-C的本机插件的任何调用都不起作用,以及任何交互式调用,例如警报或console.log().它们仅在应用程序恢复时处理,在下一个运行循环中."
这与我在Android设备上看到的非常相似,不过我想知道它是否是同一个问题.我真的需要修复或解决方法,因为当用户暂停应用程序时,这是一个无法关闭音频的showstopper.
这是我添加暂停事件监听器的代码:
document.addEventListener('deviceready', on_device_ready, false);
function on_device_ready()
{
document.addEventListener('pause', on_pause, false);
document.addEventListener('resume', on_resume, false);
}
Run Code Online (Sandbox Code Playgroud)
更新:我想我已经解决了,虽然我对解决方案不太满意.我已将Phonegap config.xml变量KeepRunning设置为false.我设置为true,现在它应该得到暂停事件.我觉得我应该能够阻止我的应用程序在后台运行,并且还可以预先运行一些暂停代码.
无论如何,这是我正在谈论的config.xml行:
<preference name="KeepRunning" value="true"/>
Run Code Online (Sandbox Code Playgroud)
当我为我的论文开发 MP3 播放器时,我在第一个 Android 版本中遇到了同样的问题。
问题是我没有创建线程,因此停止函数不是优先执行的。
我知道我的论文不是在 Cordova 中进行的,但是阅读 Cordova 文档中指出
Threading. JavaScript in the WebView does not run on the UI thread. It runs on the
WebCore thread
Run Code Online (Sandbox Code Playgroud)
来自科尔多瓦文档
另请参阅Android 文档,您是否考虑过实现一个适合 Cordova 插件的处理多线程和任务队列的类?
| 归档时间: |
|
| 查看次数: |
3302 次 |
| 最近记录: |