Android Studio 如何分析能耗活動
前面的小節(jié)我們學習了如何分析網(wǎng)絡活動。本小節(jié)學習如何分析能耗活動。
1. Energy Profiler 概覽
1.1 什么是 Energy Profiler
Energy Profiler 可幫助我們了解應用在哪里耗用了不必要的電量。
Energy Profiler 會監(jiān)控 CPU、網(wǎng)絡無線裝置和 GPS 傳感器的使用情況,并直觀地顯示其中每個組件消耗的電量。Energy Profiler 還會顯示可能會影響耗電量的系統(tǒng)事件(喚醒鎖定、鬧鐘、作業(yè)和位置信息請求)的發(fā)生次數(shù)。
Energy Profiler 并不會直接測量耗電量,而是使用一種模型來估算設(shè)備上每項資源的耗電量。
1.2 打開 Energy Profiler
要打開 Energy Profiler,請按以下步驟操作:
依次選擇 View > Tool Windows > Profiler 或點擊工具欄中的 Profile 圖標,如果 Select Deployment Target 對話框顯示提示,請選擇要將我們的應用部署到哪個設(shè)備上以進行性能剖析。
點擊 Energy 時間軸中的任意位置以打開 Energy Profiler。當我們打開 Energy Profiler 時,它會立即開始顯示應用的估算耗電量。系統(tǒng)會顯示類似于下圖的界面。
Energy Profiler 的默認視圖包括以下時間軸:
-
Event 時間軸:顯示應用中的 Activity 在其生命周期內(nèi)不斷轉(zhuǎn)換而經(jīng)歷各種不同狀態(tài)的過程。此時間軸還會指示用戶與設(shè)備的交互,包括屏幕旋轉(zhuǎn)事件;
-
Energy 時間軸:顯示應用的估算耗電量;
-
System 時間軸:顯示可能會影響耗電量的系統(tǒng)事件。
要查看 CPU、網(wǎng)絡和位置信息 (GPS) 資源,以及相關(guān)系統(tǒng)事件的具體耗電量情況,請將鼠標指針放在 Energy 時間軸中的條形上方。
2. 檢查系統(tǒng)事件
我們可以使用 Energy Profiler 查找可能會影響耗電量的系統(tǒng)事件,包括喚醒鎖定、作業(yè)和鬧鐘:
-
喚醒鎖定是一種機制,可在設(shè)備進入休眠模式時使 CPU 或屏幕保持開啟狀態(tài)。例如,播放視頻的應用可以使用喚醒鎖定,以便在用戶未與設(shè)備交互時使屏幕保持開啟狀態(tài)。請求喚醒鎖定不是一項耗電量很高的操作,但未撤消喚醒鎖定會導致屏幕或 CPU 保持開啟狀態(tài)的時間超過必要時間,從而加快電池耗電速度。
-
我們可以使用鬧鐘定期在應用上下文之外運行后臺任務。當鬧鐘觸發(fā)時,它可能會喚醒設(shè)備并運行耗電量很高的代碼。
-
我們可以使用作業(yè)在指定條件下(例如恢復網(wǎng)絡連接時)執(zhí)行相關(guān)操作。我們可以使用 JobBuilder 創(chuàng)建作業(yè),并使用 JobScheduler 對這些作業(yè)進行調(diào)度。在許多情況下,建議使用 JobScheduler 對作業(yè)進行調(diào)度,而不是使用鬧鐘或喚醒鎖定。
-
位置信息請求使用 GPS 傳感器,這會消耗大量電量。
借助 Energy Profiler,我們可以輕松找到應用使用各項功能的位置,以便我們就如何使用各項功能做出明智的決策。
Energy Profiler 會在 Energy 時間軸下的 System 時間軸中顯示一個彩色編碼的條形,以表示系統(tǒng)事件處于活動狀態(tài)的時間范圍。喚醒鎖定用紅色條形表示,作業(yè)和鬧鐘用黃色條形表示,位置信息事件用淺紫色條形表示。
如下圖顯示了 Energy Profiler,并在代碼編輯器中定位到了未釋放喚醒鎖定對應的源代碼。
-
要打開 System Event 窗格并顯示喚醒鎖定等事件的詳細信息,請在 Energy 時間軸中選擇一個時間范圍。
-
要打開 Wake Lock Details 窗格并顯示特定喚醒鎖定的詳細信息,請在 System Event 窗格中選擇該喚醒鎖定。
-
要打開代碼編輯器并跳轉(zhuǎn)到喚醒鎖定的源代碼,請在 Wake Lock Details 窗格中雙擊調(diào)用堆棧頂部的調(diào)用方法條目。
-
用于獲取喚醒鎖定的調(diào)用會在源代碼編輯器中突出顯示。
4. 小結(jié)
本節(jié)課程我們主要學習了如何分析能耗活動。本節(jié)課程的重點如下:
- 掌握如何檢查影響耗電量的系統(tǒng)事件。