標籤:ase 處理 eww ble get yguard isa 使用者 一個
假設有這樣一個應用情境,一個服務一直在默默的工作(比如即時地擷取伺服器的訊息),即使在螢幕已經因為長時間無操作而關閉,或者使用者按了電源鍵讓螢幕關閉,手機進入休眠狀態,他必須依然在工作中。一旦從伺服器擷取到訊息,他能點亮螢幕,然後進行一些處理工作。
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 許可權
android保持服務不休眠(持續運行)以及喚醒螢幕的方法