最近項目中用到了service進(jìn)行計時,在連接USB的情況下一切正常,但是拔掉USB后發(fā)現(xiàn),手機(jī)進(jìn)入休眠后service停止了工作。最后通過 PowerManager.WakeLock 在屏幕休眠后保持cpu喚醒狀態(tài)以使得service繼續(xù)運行。
官網(wǎng)提醒:這個API會加劇耗電,所以在非必要情況下盡量不要使用。如果要使用盡量使用最低的等級,并在退出后釋放資源。
wake lock一共有四個等級:
| Flag Value | CPU | Screen | Keyboard |
|---|---|---|---|
| PARTIAL_WAKE_LOCK | On* | Off | Off |
| SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
| SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
| FULL_WAKE_LOCK | On | Bright | Bright |
因為項目中只需要保持cpu喚醒即可,所以使用 PARTIAL_WAKE_LOCK 即可。
在service中使用方式如下:
...private PowerManager.WakeLock wakeLock = null;...@Overridepublic void onCreate() { super.onCreate(); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TimerService.class.getName()); wakeLock.acquire();}...@Overridepublic void onDestroy() { if (wakeLock != null) { wakeLock.release(); wakeLock = null; } super.onDestroy();}以上這篇保持Android Service在手機(jī)休眠后繼續(xù)運行的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點
疑難解答
圖片精選