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