阻止我的应用程序休眠(Cordova / Android)

时间:2016-12-12 19:06:04

标签: javascript android cordova

我有一个Android应用程序,我是从node.js webpack项目创建的。

当我在手机上安装我的应用程序时,我注意到它在手机睡眠时会睡觉。例如,我有一个javascript计时器停止被调用:

pingTimer=setInterval(ping,pingInterval);

用于pingInterval。如何阻止我的应用程序进入睡眠状态?最终,我会希望我的应用程序进入睡眠状态,但现在停止手机睡眠是我最好的选择。

更新

我按照此处所述的说明进行操作:

http://www.greenbot.com/article/2993199/android/how-to-turn-off-doze-mode-for-specific-apps-in-android-marshmallow.html

但没有运气。

3 个答案:

答案 0 :(得分:8)

您使用的最佳选择是WakeLock api

manifest file的{​​{1}}中添加权限

wakeLock

然后您可以根据您的修改添加以下内容,如MDN行为

中所建议的那样
<uses-permission android:name="android.permission.WAKE_LOCK" />

并使用function forPingTimer(){ var lock = window.navigator.requestWakeLock('screen'); //set timeout or until the timer expires } 函数释放锁定。

对于cordova应用程序,您还可以使用插件insomnialock.unlock();文件中进行的更改与文档中所述相同,并且可以按以下方式使用

config

答案 1 :(得分:4)

防止你的cordova android应用程序睡眠的最简单方法是使用Insomnia-PhoneGap-Plugin。大多数平台(如Android,iOS和Windows)都支持此插件。

此插件易于使用。插件中的keepAwake函数可防止设备休眠,allowSleepAgain函数调用允许设备再次进入休眠状态。您可以在official insomnia plugin link上找到更多信息。

希望它有所帮助。欢呼声。

答案 2 :(得分:0)

为了清楚语法,请安装cordova-plugin-insomnia插件。然后在代码中包含一个简单的间隔计时器:

// start an interval timer
var mainloopid = setInterval(mainloop, 1000);
function mainloop {
    // call the plugin every (say) one second to keep your app awake
    window.plugins.insomnia.keepAwake();
}

你必须定期调用插件的keepAwake方法(至少在你的设备要睡觉之前。)这是所有显示时钟必须的,并且间隔定时器可以是你的定时器的一部分,用于更新时钟中的秒。此解决方案覆盖了设备上的设置,例如“15秒后休眠”。这相当于Android设备设置为“从不睡觉”(当您的应用程序正在运行时)。