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