繁体   English   中英

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

[英]Stop my app from sleeping (Cordova/Android)

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

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

pingTimer=setInterval(ping,pingInterval);

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

UPDATE

我按照这里描述的说明操作:

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

但没有运气。

您可以使用的最佳选择是WakeLock api

wakeLockmanifest file添加权限

<uses-permission android:name="android.permission.WAKE_LOCK" />

然后您可以根据您的修改添加以下内容,如MDN行为中所建议的那样

function forPingTimer(){
 var lock =  window.navigator.requestWakeLock('screen');
 //set timeout or until the timer expires
}

并使用lock.unlock();释放锁定lock.unlock(); 功能。

要么

对于cordova应用程序,您也可以使用插件失眠config文件中进行的更改如文档中所述,它可以简单地以下列方式使用

function forPingTimer(){
//as long as the app runs or set the timeout here or wrap it in a promise
//Simply calling window.plugins.insomnia.keepAwake() to keep awake
}
//window.plugins.insomnia.allowSleepAgain() to sleep again until the timer after the timer is fulfilled

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

这个插件很容易使用。 插件中的keepAwake函数可防止设备进入休眠状态,并且允许使用allowSleepAgain函数调用允许设备再次进入休眠状态。 你可以在官方的失眠插件链接上找到更多信息。

希望能帮助到你。 干杯。

为了清楚语法,请安装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设备设置为“从不睡觉”(当您的应用运行时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM