由於手機存在休眠策略,所以停止使用一點時間後CPU可能會停止運行進入休眠狀態,爲了保持CPU的一直喚醒,安卓提供了WakeLock相關API,這裏做個簡單小結。
爲了獲取WakeLock,先要拿到PowerManager。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
然後從PowerManager獲取WakeLock實例。
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
newWakeLock的第一個參數需要傳入一個int行flags。
PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,TAG);
wl.acquire();
// ... do work...
wl.release();
PARTIAL_WAKE_LOCK
FULL_WAKE_LOCK
SCREEN_DIM_WAKE_LOCK
SCREEN_BRIGHT_WAKE_LOCK
PROXIMITY_SCREEN_OFF_WAKE_LOCK
ACQUIRE_CAUSES_WAKEUP
ON_AFTER_RELEASE
PARTIAL_WAKE_LOCK:保證CPU保持高性能運行,而屏幕和鍵盤背光(也可能是觸摸按鍵的背光)關閉。一般情況下都會使用這個WakeLock。
ACQUIRE_CAUSES_WAKEUP:這個WakeLock除了會使CPU高性能運行外還會導致屏幕亮起,即使屏幕原先處於關閉的狀態下。
ON_AFTER_RELEASE:如果釋放WakeLock的時候屏幕處於亮着的狀態,則在釋放WakeLock之後讓屏幕再保持亮一小會。如果釋放WakeLock的時候屏幕本身就沒亮,則不會有動作。
API17被棄用的WakeLock:保持屏幕長亮
SCREEN_DIM_WAKE_LOCK:保證屏幕亮起,但是亮度可能比較低。同時鍵盤背光也可以不亮。
SCREEN_BRIGHT_WAKE_LOCK :保證屏幕全亮,同時鍵盤背光也亮。
FULL_WAKE_LOCK:表現和SCREEN_BRIGHT_WAKE_LOCK 類似,但是區別在於這個等級的WakeLock使用的是最高亮度!
推薦是用WindowFlagWindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON。使用方法是:
在Activity中: getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
在佈局中添加這個屬性:android:keepScreenOn="true"