我有一个Android应用程序,我是从node.js webpack项目创建的。
当我在手机上安装我的应用程序时,我注意到它在手机睡眠时会睡觉。例如,我有一个javascript计时器停止被调用:
pingTimer=setInterval(ping,pingInterval);
用于pingInterval。如何阻止我的应用程序进入睡眠状态?最终,我会希望我的应用程序进入睡眠状态,但现在停止手机睡眠是我最好的选择。
更新
我按照此处所述的说明进行操作:
但没有运气。
答案 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应用程序,您还可以使用插件insomnia在lock.unlock();
文件中进行的更改与文档中所述相同,并且可以按以下方式使用3} p>
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设备设置为“从不睡觉”(当您的应用程序正在运行时)。