溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何保持Android Service在手機(jī)休眠后繼續(xù)運(yùn)行

發(fā)布時(shí)間:2021-08-07 11:40:13 來(lái)源:億速云 閱讀:137 作者:小新 欄目:移動(dòng)開(kāi)發(fā)

這篇文章主要為大家展示了“如何保持Android Service在手機(jī)休眠后繼續(xù)運(yùn)行”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何保持Android Service在手機(jī)休眠后繼續(xù)運(yùn)行”這篇文章吧。

最近項(xiàng)目中用到了service進(jìn)行計(jì)時(shí),在連接USB的情況下一切正常,但是拔掉USB后發(fā)現(xiàn),手機(jī)進(jìn)入休眠后service停止了工作。最后通過(guò) PowerManager.WakeLock 在屏幕休眠后保持cpu喚醒狀態(tài)以使得service繼續(xù)運(yùn)行。

官網(wǎng)提醒:這個(gè)API會(huì)加劇耗電,所以在非必要情況下盡量不要使用。如果要使用盡量使用最低的等級(jí),并在退出后釋放資源。

wake lock一共有四個(gè)等級(jí):

Flag ValueCPUScreenKeyboard
PARTIAL_WAKE_LOCKOn*OffOff
SCREEN_DIM_WAKE_LOCKOnDimOff
SCREEN_BRIGHT_WAKE_LOCKOnBrightOff
FULL_WAKE_LOCKOnBrightBright

因?yàn)轫?xiàng)目中只需要保持cpu喚醒即可,所以使用 PARTIAL_WAKE_LOCK 即可。

在service中使用方式如下:

...
private PowerManager.WakeLock wakeLock = null;
...
@Override
public void onCreate() {
 super.onCreate();
 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TimerService.class.getName());
 wakeLock.acquire();
}
...
@Override
public void onDestroy() {
 if (wakeLock != null) {
  wakeLock.release();
  wakeLock = null;
 }
 super.onDestroy();
}

以上是“如何保持Android Service在手機(jī)休眠后繼續(xù)運(yùn)行”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI