PowerManager詳解

PowerManager的作用在於對電源進行管理。

PowerManager相關的接口和設備電池一次性使用時間的長短有很大的關聯。除非非要使用時,儘可能最小限度的使用,並且要記得釋放。

可以通過調用Context.getSystemService(Context.POWER_SERVICE)獲取PowerManager實例。

你可能會用到的最主要的API爲:newWakeLock();將創建一個PowerManager.WakeLock對象。可以通過這個對象的API對電源進行管理。下面列舉一個實例:

[java] view plaincopy
  1. PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);  
  2. PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "helloyuling");  
  3. wl.acquire();  
  4.     ...screen will stay on during this section.  
  5. wl.release();  
 


下面定義的flag,將一定程度上影響系統電源。這些flags是互斥的,你可以用其中的一個:

PARTIAL_WAKE_LOCK:屏幕和鍵盤燈允許熄滅;

SCREEN_DIM_WAKE_LOCK:屏幕保持點亮(屏幕將進入DIM狀態),鍵盤燈允許熄滅;

SCREEN_BRIGHT_WAKE_LOCK:屏幕保持點亮,鍵盤燈允許熄滅;

FULL_WAKE_LOCK:屏幕和鍵盤燈保持高亮顯示;

 

注意:

如果你獲取了一個PARTIAL_WAKE_LOCK,CPU將持續運行,與計時器無關(計時器指計算系統休眠的時間,當休眠時間到達某個值時,kernel將停止運行),甚至用戶按掛機鍵也無法停止;其他的WakeLocks,CPU將持續運行,但是用戶可以通過按掛機鍵的方式來使得設備休眠。

 


另外,可以額外添加下面兩個flags,此兩個flags只能作用於屏幕。但此兩個flags和PARTIAL_WAKE_LOCK聯合作用時,是無效的。

ACQUIRE_CAUSES_WAKEUP:

正常的WakeLocks是不能點亮屏幕的,然和,他們可以在屏幕點亮後保持點亮狀態。ACQUIRE_CAUSES_WAKEUP可以強制點亮屏幕。比較經典的用法是,當重要通知到來時,可以立刻點亮屏幕來通知用戶。(比如短信)

 

ON_AFTER_RELEASE:WakeLocks被釋放時,時鐘將被重置,使得屏幕點亮的時間稍微增長。


常用的API

void goToSleep(long time)

強制設備休眠。

 

Boolean isScreenOn()

判斷屏幕是否休眠。

 

PowerManager.WakeLock newWakeLock(int flags, String tag)

 

void userActivity(long when, Boolean noChangeLights)

(這個API沒理解,望知道的朋友告知,謝謝)

 


注意:

在使用以上函數的應用程序中,必須在AndroidManifest.xml文件中加入下面的權限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.DEVICE_POWER" />

 

另,其他的點亮屏幕的方法(限於Activity):

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

| WindowManager.LayoutParams.FLAG_TRUE_SCREEN_ON);

發佈了21 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章