android保持服務不休眠(持續執行)以及喚醒螢幕的方法

netcorner發表於2018-06-25

假設有這樣一個應用場景,一個服務一直在默默的工作(比如即時地獲取伺服器的訊息),即使在螢幕已經因為長時間無操作而關閉,或者使用者按了電源鍵讓螢幕關閉,手機進入休眠狀態,他必須依然在工作中。一旦從伺服器獲取到訊息,他能點亮螢幕,然後進行一些處理工作。

 

1、讓服務持續執行而不受手機休眠的影響,要這樣處理:

在onCreate裡面新增:

pm = (PowerManager)MyApplicationHolder.getContext().getSystemService(Context.POWER_SERVICE);  
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myservice");  
wl.acquire();  

在onDestroy裡新增:

wl.release();  

這樣就完成了,這個服務裡如果做了一個定時器的話,他會一直執行。

2、讓手機從休眠狀態喚醒的方法:

KeyguardManager km = (KeyguardManager)MyApplicationHolder.getContext().getSystemService(Context.KEYGUARD_SERVICE);  
KeyguardLock kl = km.newKeyguardLock("unlock");  
kl.disableKeyguard();  
  
PowerManager pm = (PowerManager)MyApplicationHolder.getContext().getSystemService(Context.POWER_SERVICE);  
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.FULL_WAKE_LOCK, "bright");  
wl.acquire();  
wl.release();  

注意,使用這個方法螢幕不能設鎖。需android.permission.DISABLE_KEYGUARD 許可權

相關文章