為了延長(zhǎng)電池的使用壽命,Android設(shè)備會(huì)在一段時(shí)間后使屏幕變暗,然后關(guān)閉屏幕顯示,最后停止CPU。WakeLock是一個(gè)電源管理系統(tǒng)服務(wù)功能,應(yīng)用程序可以使用它來控制設(shè)備的電源狀態(tài)。
WakeLock可以用來保持CPU運(yùn)行,避免屏幕變暗和關(guān)閉,以及避免鍵盤背光燈熄滅。
注意:
創(chuàng)建和使用Wake Lock會(huì)對(duì)應(yīng)用程序造成的電池電量消耗產(chǎn)生顯著的影響。因此,最好只在確實(shí)有必要時(shí)使用Wake Lock,并且使用它們的時(shí)間越少越好,只要有可能就釋放它們。
要?jiǎng)?chuàng)建一個(gè)Wake Lock,需要調(diào)用電源管理器的newWakeLock,并指定一下一種WakeLock類型:
- FULL_WAKE_LOCK 保持屏幕全亮、鍵盤背光燈點(diǎn)亮和CPU運(yùn)行。
- SCREEN_BRIGHT_WAKE_LOCK 保持屏幕全亮和CPU運(yùn)行。
- SCREEN_DIM_WAKE_LOCK 保持屏幕開啟(但是讓它變暗)和CPU運(yùn)行。
- PARTIAL_WAKE_LOCK 保持CPU運(yùn)行。
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
創(chuàng)建Wake Lock后,可以通過調(diào)用acquire來獲取它??梢杂羞x擇地指定一個(gè)超時(shí)值來確保將在盡可能長(zhǎng)的時(shí)間內(nèi)保持使用Wake Lock。當(dāng)為某個(gè)動(dòng)作使用Wake Lock,而該動(dòng)作做完成時(shí),需要調(diào)用release來讓系統(tǒng)管理電源狀態(tài)。 下面程序顯示了創(chuàng)建、獲取和釋放Wake Lock的一個(gè)典型的使用模式。
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
/** Do things requiring the CPU stay active */
wakeLock.release();
需要權(quán)限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>