【官網翻譯】性能篇(四)爲電池壽命作優化——使用Battery Historian分析電源使用狀況

前言android

       本文翻譯自「爲電池壽命作優化」系列文檔中的其中一篇,用於介紹如何使用Battery Historian分析電源使用狀況。shell

       中國版官網原文地址爲: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網絡

 

正文app

       Battery Historian工具能夠深刻了解隨着時間的推移設備的電池消耗狀況。在系統範圍級別,該工具以HTML展現的方式視覺化了系統日誌中與電源相關的事件。在具體的應用級別,該工具提供了多種數據,這些數據能夠幫您識別耗盡電池的應用行爲。ide

       本文檔描述了一些方法,經過這些方法您能夠使用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秒或更少.
  • 使用移動無線網絡比預期的更頻繁。

 

結語

       本文最大限度保持原文的意思,因爲筆者水平有限,如有翻譯不許確或不穩當的地方,請指正,謝謝!

相關文章
相關標籤/搜索