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

Cordova - how to detect the app is not actively used anymore Android

好的,所以我的应用程序是一个 flashlight/torch 应用程序,可以在此处找到: https://github.com/Skelware/Fancy-Flashlight and it uses a Cordova plugin found here: https://github.com/Skelware/Cordova-Flashlight

目前我只关心Android。简要解释一下这样的应用程序在 Android 上的工作方式:应用程序必须请求访问相机并且这是在后台完成的,加载相机需要一段时间才能加载(和卸载)应该尽可能少发生。当一个应用可以访问相机时,其他应用不能请求访问。

当我的应用程序启动时,它会加载相机并执行它需要执行的操作。但是当用户切换到不同的应用程序或关闭我的应用程序时,相机仍然注册到我的应用程序导致所有其他应用程序无法使用相机。

虽然我更愿意在 JavaScript 端处理这个问题,但在插件中本地处理也可以。

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

Cordova 版本是 4.0,Android 版本是 4.4,尽管我怀疑这是否重要。

我该怎么办?

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

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);