Cordova - 如何检测应用程序不再被Android使用

时间:2015-01-16 18:04:16

标签: javascript android cordova

好的,我的应用程序是一个手电筒/火炬应用程序,在这里找到: https://github.com/Skelware/Fancy-Flashlight它使用了一个Cordova插件:https://github.com/Skelware/Cordova-Flashlight

目前我只关心Android。简要解释这样的应用程序在Android上运行的方式:应用程序必须请求访问摄像头,这是在后台完成的,在摄像头加载之前需要一段时间,因此加载(和卸载)应该发生的很少尽可能。虽然应用可以访问相机,但其他任何应用都无法请求访问权限。

当我的应用程序启动时,它会加载相机并完成它需要做的事情。但是当用户切换到其他应用程序或关闭我的应用程序时,相机仍然会注册到我的应用程序,导致所有其他应用程序无法使用相机。

虽然我更喜欢在JavaScript方面处理这个问题,但在插件中本地处理它也是可以的。

当退出(完全退出,即)应用程序时,Window的卸载事件似乎被触发,但它没有足够的时间来释放相机。

Cordova版本为4.0,Android版本为4.4,但我怀疑这很重要。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您的案例的问题是应用程序在达到后台模式时进入睡眠状态(用户按下主页按钮等)。通过调用

Cordova background plugin可以防止这种情况
cordova.plugins.backgroundMode.enable();

您可以在获得相机时调用此功能,当您松开相机时,可以调用相应的

cordova.plugins.backgroundMode.disable();

通过这种方式,您可以在不需要时防止睡眠,从而保护您的电池安全。

然后,您只需要绑定暂停事件

document.addEventListener("pause", function() {
  // Here call your release function and in the release function, you can call the disable for background mode
}, false);