歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 使用Wake Lock

Android 使用Wake Lock

日期:2017/3/1 10:41:08   编辑:Linux編程
為了延長電池的使用壽命,Android設備會在一段時間後使屏幕變暗,然後關閉屏幕顯示,最後停止CPU。WakeLock是一個電源管理系統服務功能,應用程序可以使用它來控制設備的電源狀態。

WakeLock可以用來保持CPU運行,避免屏幕變暗和關閉,以及避免鍵盤背光燈熄滅。

注意:

創建和使用Wake Lock會對應用程序造成的電池電量消耗產生顯著的影響。因此,最好只在

確實有必要時使用Wake Lock,並且使用它們的時間越少越好,只要有可 能就釋放它們。

屏幕Wake Lock通常用於在用戶觀看屏幕但是很少與屏幕進行交互期間(例如,播放視頻)防止屏幕變暗。

CPU Wake Lock用於防止設備進入休眠狀態,直至執行了一個操作。當服務從意圖接收器內啟動時常常出現這種情況,因為意圖接收器可能在設備休眠期間接收意圖。值得注意的是,在這種情況下,系統將在廣播接收器的整個onReceive處理程序中使用CPU Wake Lock。

注意:

如果在廣播接收器的onReceive處理程序中啟動一個服務或廣播一個意圖,那麼有可能在服務

啟動以前,所使用的Wake Lock就會被釋放。為了確保服務能夠執行,需要放置一個獨立的Wake Lock。

要創建一個Wake Lock,需要調用電源管理器的newWakeLock,並指定一下一種WakeLock類型:

* FULL_WAKE_LOCK 保持屏幕全亮、鍵盤背光燈點亮和CPU運行。

* SCREEN_BRIGHT_WAKE_LOCK 保持屏幕全亮和CPU運行。

* SCREEN_DIM_WAKE_LOCK 保持屏幕開啟(但是讓它變暗)和CPU運行。

* PARTIAL_WAKE_LOCK 保持CPU運行。

  1. PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
  2. WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");

創建Wake Lock後,可以通過調用acquire來獲取它。可以有選擇地指定一個超時值來確保將在盡可能長的時間內保持使用Wake Lock。當為某個動作使用Wake Lock,而該動作做完成時,需要調用release來讓系統管理電源狀態。 下面程序顯示了創建、獲取和釋放Wake Lock的一個典型的使用模式。

  1. PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
  2. WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
  3. wakeLock.acquire();
  4. /** Do things requiring the CPU stay active */
  5. wakeLock.release();
Copyright © Linux教程網 All Rights Reserved