Insomnia插件承诺会使用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上的Pause处理程序无法调用任何本机 - 包括Insomnia插件。
如何实现所需的功能?
答案 0 :(得分:1)
您可以将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
}
答案 1 :(得分:0)
查看该插件的来源,在iOS上它会在setIdleTimerDisabled:true
实例上调用UIApplication
。 isIdleTimerDisabled
是
一个布尔值,用于控制是否为 app 禁用空闲计时器。
它不会为整个设备禁用空闲计时器,因此如果用户暂停您的应用程序,则将再次启用空闲计时器。