WakeLock小計

由於手機存在休眠策略,所以停止使用一點時間後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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章