Insomnia插件 promise 使用 window.plugins.insomnia.keepAwake()
保持设备唤醒,直到 window.plugins.insomnia.allowSleepAgain()
被调用。
但对于某些应用程序,只有在应用程序处于事件状态时设备保持唤醒才有意义。如果用户暂停应用程序并忘记他们已将应用程序留在后台运行,最好让应用程序进入休眠状态而不是耗尽电池电量。
通常,应用暂停时所需的操作是通过 pause
事件处理的:
function onDeviceReady() {
document.addEventListener("pause", onPause, false);
}
function onPause() {
window.plugins.insomnia.allowSleepAgain();
}
但根据Cordova docs ,iOS 上的暂停处理程序无法调用任何 native 的内容 - 其中包括 Insomnia 插件。
如何实现想要的功能?
最佳答案
您可以将 allowSleepAgain()
与 $timeout
一起使用,并在每次使用 keepAwakeforMinutes()
执行某些操作时重新启动延迟。
var keepAwakeforMinutes = function(minutes){
// when an action is done,
// cancel the last allowSleepAgain() $timeout if exists to create a new longer one
if ($rootScope.sleeping){
// alert("cancel previous timeout");
$timeout.cancel( $rootScope.sleeping );
}
// be awake for the next minutes by creating a new timeout
$window.plugins.insomnia.keepAwake();
$rootScope.sleeping = $timeout(function() {
// timeout ended
$window.plugins.insomnia.allowSleepAgain();
}, 60000*minutes); // awake for the next minutes
}
关于ios - ionic 仅在应用程序运行时防止手机休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174859/