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