前言
本文翻譯自“為電池壽命做優化”系列文檔中的其中一篇,用於介紹如何使用Battery Historian分析電源使用情況。
中國版官網原文地址為:https://developer.android.google.cn/topic/performance/power/battery-historian。
路徑為:Android Developers > Docs > 指南 > Best practies > Performance > Optimize for battery life > Analyze power use with Battery Historian
正文
Battery Historian工具可以深入了解隨着時間的推移設備的電池消耗情況。在系統范圍級別,該工具以HTML展示的方式視覺化了系統日志中與電源相關的事件。在具體的應用級別,該工具提供了多種數據,這些數據可以幫您識別耗盡電池的應用行為。
本文檔描述了一些方法,通過這些方法您可以使用Battery Historian來學習電池消耗范例。本文檔以解釋怎樣閱讀Battery Historian報告的系統范圍內的數據開始。然后,展示了一些方法,通過這些方法,您可以使用Battery Historian來診斷和排除您自己的應用中與電池消耗相關的行為。最后,提供了一些對Battery History可能特別有用的場景的提示。
使用系統范圍的視圖
Battery Historian工具提供了一種系統范圍的可視化顯示,它包含了各種應用和系統的行為,以及它們與隨着時間推移電池消耗的關聯。正如圖1中所顯示的,該視圖可以幫您診斷和識別您應用的電源使用問題。
圖1:Battery Historian關於系統范圍內影響電源消耗事件的顯示
圖中令人尤為感興趣的是這條黑色的、水平的、向下的代表電池等級的趨勢線,它是在y軸上測量的。例如,在"Battery Level"行的最開始,大約上午6:50時,可視化圖在電池線上顯示了一個相對陡峭的下降。
圖2提供了顯示圖中那部分的特寫鏡頭。
圖2:從大約6:50 AM到7:20 AM之間Battery Historian時間線的特寫鏡頭
當電量急劇下降時,在電池等級線的最開始展示圖顯示了正在發生的三件事:CPU正在運行,應用獲得了一個喚醒鎖,以及屏幕亮了。在這種方式中,Battery Historian幫您了解到當電池消耗很高時發生了什么事件。然后,您可以瞄准您應用中的這些行為以及研究是否您可以進行一些相關的優化。
這個系統范圍的可視化圖也可以提供其它的線索。例如,如果它顯示移動無線網頻繁地關閉和開啟,那么通過如JobScheduler或者Firebase Job Dispatcher等【智能調度API】可能有機會優化這些行為。
下一個部分解釋了怎樣針對您自己的應用研究行為和事件。
查看具體應用的數據
除了通過系統范圍視圖提供的宏觀水平數據,Battery Historian也提供了表格和一些數據的可視化圖,該可視化視圖特別針對您設備上運行的每一個應用。這些表格化的數據包括:
- 設備上應用的估計電源使用。
- 網絡信息。
- 喚醒鎖。
- 服務。
- 進程信息。
表格提供了關於您的應用的兩個維度的數據。首先,你可以查找與其它應用相比,您的應用的電源使用排名在哪里。為了做這件事,在“Tables”下點擊“Device Power Estimates”表格。這個表格檢查了一個虛構的叫做“Pug Power”的應用。
圖3:調查那些應用消耗了最多的電量。
圖3中的表格揭示了“Pug Power”是設備上電量的第九大消費者,也是第三大非操作系統部分的應用。這個數據顯示該應用應該進行更深入的研究。
為了查找指定應用的數據,輸入它的包名到“App Selection”下方的兩列下拉菜單的下層,它們位於可視化圖的左邊。
圖4:輸入想查看數據的指定應用
當您選擇了一個指定的應用,如下的數據是可視化類型就變為顯示指定應用的數據,而不是系統范圍的數據:
- SyncManager.
- Foreground process
- Userspace Wakelock
- Top app
- JobScheduler
- Activity Manager Proc
如果您的應用執行同步和執行作業比需要的更頻繁,“SyncManager”和“JobScheduler”可視化視圖會立即使其變得很明顯。通過這樣做,它們可以快速地顯示機會來為提升電池性能優化您應用的行為。
您也可以獲得再多一塊指定應用的可視化數據——“Userspace Wakelock”。為了在bug報告中包含這個信息,在您的終端窗口中輸入如下命令:
$ adb shell dumpsys batterystats --enable full-wake-history
★ 注意:從Android6.0(API等級23)開始,平台包含了Doze功能,給應用實行了某些優化。例如,無論JobScheduler如何調度作業,Doze批量處理工作都會在短暫的維護窗口中進行。
圖5和圖6顯示了“Pug Power”數據:圖5顯示了指定應用數據的可視化視圖,圖6顯示了相應的表格數據。
圖5:虛構應用“Pug Power”數據的可視化視圖
圖6:虛構應用“Pug Power”的表格化數據
可視化視圖不會立即顯示明顯的內容。JobScheduler行顯示應用沒有任何工作調度。SyncManager行顯示應用沒有執行任何同步。
可是,表格數據中Wakelocks部分的檢測顯示Pug Power獲取wakelocks(喚醒鎖)總共超過了一個小時。這個不尋常且代價高的行為可能要為應用電量消耗的高水平負責。這一信息幫助開發者瞄准那些可能給優化帶來巨大幫助的區域。在這種情況下,為什么應用獲取這么多喚醒鎖時間,以及開發者如何改善這種行為?
其它Battery Historian可能有幫助的情況
有很多其它情形,Battery Historian能幫您診斷機會來改善電池行為。例如,Battery Historian能告訴您是否您的應用正在:
- 過於頻繁地觸發喚醒警報(每10秒鍾或更少)
- 持續持有GPS鎖。
- 調度工作每30秒或更少。
- 調度同步每30秒或更少.
- 使用移動無線網絡比預期的更頻繁。
結語
本文最大限度保持原文的意思,由於筆者水平有限,若有翻譯不准確或不妥當的地方,請指正,謝謝!