使用Batterystats和Battery Historian分析耗電情況

一、安裝基本工具

  • 下載docker,用于安裝Battery Historian。
  • Batterystats 工具
  • Battery Historian 腳本

Batterystats 是包含在 Android 框架中的一種工具,用于收集設備上的電池數(shù)據(jù),通過adb命令將收集的電池數(shù)據(jù)轉存到開發(fā)機器,并聲稱可使用 Battery Historian 分析的報告。

安裝battery Historian,推薦使用Docker安裝。
1.安裝Docker:Docker 網站安裝 Docker 社區(qū)版后檢查Docker是否安裝成功:docker run hello-world是否能跑起來。

2.運行Battery Historian映像:執(zhí)行docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999命令運行,端口號可在運行的docker中查看。
3.確認是否運行,在瀏覽器打開地址:

4.收集數(shù)據(jù) 終端窗口使用adb命令:

  • 關閉正在運行的adb服務器:adb kill-server
  • 重啟adb并檢查是否有已連接的設備:adb devices
  • 啟用完整喚醒鎖報告(只能測3~4小時,時間過長歷史記錄會溢出):adb shell dumpsys batterystats --enable full-wake-history
  • 重置電池數(shù)據(jù)收集,清楚舊的電池收集數(shù)據(jù):adb shell dumpsys batterystats --reset
  • 斷開設備與計算機的鏈接或USB充電消耗手機的電量
    ,運行需要監(jiān)測的APP,操作你想要獲取電池數(shù)據(jù)的行為。
  • 重新連接手機,adb devices確認連接上手機,運行轉存電池數(shù)據(jù)命令, adb shell dumpsys batterystats > [path/]batterystats.txt,等待幾分鐘會在指定的[path]目錄中生成batterystats.txt和zip壓縮包。
    或:
    Android6.0以上:adb bugreport >[path/]bugreport.zip,Android6.0及以下:adb bugreport >[path/]bugreport.txt
  • 在Battery Historian網頁中上傳壓縮包.txt文件,點擊Browse,上傳后submit提交。會生成一個可視化的表。
    電量統(tǒng)計圖表

    查看具體應用的數(shù)據(jù)

二、分析圖標數(shù)據(jù):

可視化圖表:

  • 黑線:電池電量消耗的趨勢,觀察電池電量消耗的速率來重點查看這個階段做了什么。
  • CPU runing:cpu使用時長,如果一直處在runing狀態(tài)則電量消耗會較高。
  • Wakelocks:喚醒鎖
  • JobScheduler:滿足一定的預定條件而觸發(fā)的任務,涉及的條件可以是網絡、電量、時間等。比如特定的電量或時間,選中片段查看這一階段哪個進程在使用任務調度器,發(fā)生時間、耗時及次數(shù)。
  • Screen:紅色屏幕亮,白色表示息屏狀態(tài)。
  • WiFi:
    具體應用的數(shù)據(jù):
    Device's Power Estimates : 查看該設備上的應用耗電量排名,排名應排除系統(tǒng)級應用。


    Device's Power Estimates : 查看該設備上的應用耗電量排名

找到需要監(jiān)測的應用,主要看 App Stats 欄
Device estimated power use(應用在該設備上的估計耗電量)
Foreground:前景

監(jiān)測是否過于頻繁地出發(fā)喚醒提醒
持續(xù)保留GPS鎖定
至少每30秒調度一次作業(yè)和調度一次同步
無線裝置的頻率高于預期

三、針對低功耗模式和應用待機模式進行優(yōu)化

低電耗模式
Android6.0(API23)開始引入省電功能。未鏈接電源且長時間未使用設備,會延遲應用的后臺CPU和網絡活動來降低耗電量。
喚醒屏幕或連接充電則會退出低電耗模式。
在低功耗模式下測試應用:
設備要求:Android6.0以上

  • 設備連入計算機并安裝需要測試的應用并運行保持活動狀態(tài)
  • 強制系統(tǒng)進入閑置模式:adb shell dumpsys deviceidle force-idle
  • 退出閑置模式:adb shell dumpsys deviceidle unforce
  • 重新激活設備:adb shell dumpsys battery reset

電量優(yōu)化手段:
測試場景:前臺、后臺;音視頻、直播間播放、傳感器相關、后臺靜默測試。

  • 網絡相關優(yōu)化:「時機:將延遲的網絡請求批量發(fā)送」、「次數(shù):減少請求次數(shù)」、「數(shù)據(jù)壓縮:減肥傳輸?shù)臅r間與流量」、「禁止沒必要的輪訓」

  • 傳感器相關的優(yōu)化:根據(jù)場景選擇傳感器的模式,比如使用GPS時一般會避免選擇高精度模式、是否可復用上一次的定位結果。

  • 使用JobScheduler,在Wi-Fi和充電時才去做某些操作。

JobScheduler:

WakeLock:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容