日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 电源管理 wakelock 唤醒锁机制

發布時間:2023/12/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 电源管理 wakelock 唤醒锁机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 電源管理 — 喚醒鎖全新上市

大多數人可能都遭遇過手機的電池續航時間較短帶來的尷尬。 這極其令人討厭。 沒電的手機和一塊水泥磚沒什么差別。 一般而言,如果用戶的手機電池無法持續一整天,他們會感到非常不滿。而且,當手機充電時用戶無法使用手機,這同樣會帶來極大的不便。

傳統上需要使用筆記本電腦或 PC 處理的任務,現在借助全新的改進軟件,即使未在桌旁也可使用智能手機進行處理。 但是相比筆記本電腦,智能手機的小外形很大地限制了可容納的電池尺寸。 既要求手機具備筆記本電腦的功能,同時又要求其具備全天候的電池續航能力是難以實現的。

通過采用出色的電源管 理,Android 和其他移動操作系統實現了耐久的電池續航時間。 停止使用手機后不久,顯示器便會關閉,CPU 會進入深度節能狀態,因此在不使用它時僅會消耗極少的電源。 這就是電話在使用時充一次電便能持續使用多日的原因。 借助 Android 的電源管理器,正常計劃是顯示器關閉時 CPU 也關閉。

但是,Android 開發人員能夠(并有權限)阻止 Android 設備進入睡眠模式。 他們可能希望讓 CPU 處于活動狀態 — 即使顯示器關閉。 或者可能他們希望在執行某項活動時阻止顯示器自動關閉。 出于此原因,Google* 在其 PowerManager API 中增加了喚醒鎖。 阻止設備進入睡眠模式的應用可以使用喚醒鎖。 只要系統上有活動的喚醒鎖,設備便無法進入掛起模式,除非釋放喚醒鎖。 使用喚醒鎖時,一定要了解到當您不需要喚醒鎖時,必須將其正確釋放,因為未釋放的喚醒鎖無法進入默認狀態以節能,從而很快便會將設備的電池耗盡。

本文將會為您介紹一些在 Android 4.0 中默認使用喚醒鎖的 Android 應用(和使用模式),以便幫助您了解何時使用此項技術。 然后,將會介紹一個 SDPSamples 集中的示例應用“Wakelocks”,以展示如何編寫喚醒鎖的代碼。

喚醒鎖應用使用情況

借助 Android, 有一種方法可以查看哪些服務啟用了喚醒鎖,阻止系統進入低功耗狀態。 設備上的 /proc/wakelocks 文件列出了定義使用喚醒鎖的服務和驅動程序。 通過監控 /sys/power/wake_lock 文件的內容(需要根訪問),您可以了解 CPU 資源何時啟用了喚醒鎖,以及哪種服務啟用了 wakelock2。 我捕獲了幾種使用案例,其中運行 Android 4.0 的 Galaxy Nexus 上啟用了喚醒鎖,如下所示:

使用的應用執行的操作使用了喚醒鎖的服務運行狀況
任意按下 UI Widget(如點擊按鈕或 ListView 項)PowerManagerService啟用并在 5 秒鐘后釋放鎖定
地圖/導航啟用地圖或進入導航gps-lock啟用鎖定并使用 GPS
YouTube觀看流視頻PowerManagerService在視頻播放的整個過程中一直啟用喚醒鎖
Music聽音樂PowerManagerService在音樂播放的過程中一直啟用喚醒鎖

表格:一些默認的 Android 應用演示喚醒鎖的使用

YouTube 和 Music 應用能夠很好地展示不同級別的喚醒鎖。 用戶播放視頻時,YouTube 應用將會啟用喚醒鎖。 在播放視頻的整個過程中,顯示器會保持開啟狀態(忽略系統的顯示設置)。 但是,如果用戶在播放過程中按下了電源按鈕,設備將會掛起,這會導致顯示器關閉以及音頻/視頻停止播放。 Music 應用在播放音頻時使用不同的喚醒鎖。 顯示設置無法更改,因此設備的屏幕將會根據用戶的顯示設置來關閉。 顯示器關閉后,喚醒鎖會讓 CPU 保持活動狀態以便音頻能夠繼續播放 — 即使用戶按下了電源按鈕。

選擇喚醒鎖(在執行前)

在了解如何編寫喚醒鎖之前,一定要了解喚醒鎖的種類,以便為您的應用挑選最適合的喚醒鎖。 Android PowerManager API 介紹了多種用于更改設備電源狀態的喚醒鎖標記:

標記值CPU屏幕鍵盤
PARTIAL_WAKE_LOCK開啟關閉關閉
SCREEN_DIM_WAKE_LOCK開啟調暗(Dim)關閉
SCREEN_BRIGHT_WAKE_LOCK開啟調亮(Bright)關閉
FULL_WAKE_LOCK開啟調亮(Bright)調亮(Bright)

表格:?源自 Android PowerManager API。

該 API 突出強調了喚醒鎖會顯著縮短 Android 設備的電池續航時間,因此如果可以避免應盡量減少使用它們。 如果使用,也應盡快將其釋放。

使用喚醒鎖的應用必須申請特別 許可才可執行。 這可通過應用清單文件中的 android.permission.WAKE_LOCK 許可來實現。 也就是說,當用戶通過 Google Play 安裝使用喚醒鎖的應用時,系統會提醒他們該應用包含的特性可能會“Prevent phone from sleeping(阻止手機進入睡眠狀態)”。 如果開發人員希望阻止某個應用的顯示器在特定使用情況下變暗,可采用 Google 另外提供的一種方法,這種方法無需特別許可。 WindowManager 包括一個 FLAG_KEEP_SCREEN_ON 變量,當應用的視圖要阻止界面關閉時可對其進行設置。 建議在顯示控制上使用這種方法,因為其影響在應用內相互獨立。 用戶任務切換到其他應用上之后,WindowManager 將會立刻釋放喚醒鎖。

讓顯示器保持開啟狀態(源自 SDPSamples)

SDPSamples 集的喚醒鎖應用演示了(包括代碼)應用如何使用 Window Manager 而非通過編寫喚醒鎖代碼讓顯示器保持開啟狀態。 啟用喚醒鎖應用后,選擇“Win Man Screen On”列表項。

只要按鈕的狀態顯示“Screen is LOCKED”,界面就會保持開啟狀態。 按鈕的狀態更改為“Screen is UNLOCKED”后,如果超過 5 秒鐘不操作,顯示器將會關閉。

在代碼中,每次按下按鈕且狀態發生改變時,通過設置和釋放當前窗口的 FLAG_KEEP_SCREEN_ON 變量可在 WakeLockActivity.java 中使用 screenLockUpdateState() 函數實現該操作。

public void screenLockUpdateState() {if (mIsDisplayLocked){...// update display stategetWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);} else {...// update display stategetWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);} }

編寫喚醒鎖(來自 SDPSamples)

SDPSamples 集中的喚醒鎖應用還包括執行不同喚醒鎖的代碼。 啟動喚醒鎖應用后,從下列四種喚醒鎖中選擇: Power Wake Lock Full、Power Wake Lock Bright、Power Wake Lock Dim 和 Power Wake Lock Partial。 這 4 個列表項對應著 PowerManager API 中介紹的 4 種喚醒鎖標記。 每一項將會分別演示 5 秒內嘗試關閉屏幕時設備如何響應。

通過監控 /sys/power/wake_lock 文件的內容(需要根訪問),您可以看到按下電源按鈕后 PARTIAL_WAKE_LOCK 是唯一仍然有效的喚醒鎖。 其他的喚醒鎖通過多種級別的亮度阻止顯示器關閉。

編寫喚醒鎖的第一步是申請許可,之后才可使用清單 AndroidManifest.xml 內的喚醒鎖:

這一步完成后,便可以創建喚醒鎖對象,包括控制喚醒鎖的獲取()函數和釋放()函數。 WakeLockActivity.java 文件內的編碼很好地展示了該情況:

public void onCreate(Bundle savedInstanceState) {...mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);...mWakeLock = mPowerManager.newWakeLock(mWakeLockState,"UMSE PowerTest");if (mWakeLock != null) {mWakeLock.acquire();... } }protected void onDestroy() {if (mWakeLock != null) {mWakeLock.release();mWakeLock = null;}... }

結論

喚醒鎖是 Android 中一款強大的概念,可支持開發人員修改設備的默認電源狀態。 在應用中使用喚醒鎖的風險:它會減少設備的電池續航時間。 使用喚醒鎖的明顯優點可在 Google 提供的多種默認應用中看得到,如道路導航和音樂/視頻播放。 因此,開發人員應自行確定他們的應用模型能否從使用喚醒鎖中得益。

轉載于:https://www.cnblogs.com/jasonxcj/p/4994343.html

總結

以上是生活随笔為你收集整理的android 电源管理 wakelock 唤醒锁机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。