簡體   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