一、耗電量
手機各個硬件模塊的耗電量是不一樣的,有些模塊非常耗電比如移動蜂窩網絡、GPS,而有些模塊則相對顯得耗電量小很多。
電量測試,就是測試移動設備電量消耗快慢的一種測試方法。一般用平均電流來衡量電量消耗速度。平均電流越小,說明設備使用時間越長。但是平均電流多大才說明不耗電卻沒有一個統一標準。
硬件測試:
利用硬件設備測試被測設備的電流,統計一段時間內(使用某個功能模塊)的平均電流值。
軟件測試
利用系統工具導出分析報告
二、Battery Historian
Battery Historian是google開源的電池歷史數據分析工具。
https://github.com/google/battery-historian
bugreport
導出分析數據
對於SDK25開始 bugreport 必須在7.0以上設備才能使用。
下載舊版本:
http://mirrors.zzu.edu.cn/android/repository/
如:下載r20的platform-tools
參考文章:
https://blog.csdn.net/ykmeory/article/details/90552856
https://blog.csdn.net/weixin_30318645/article/details/94818141
三、優化建議
後臺處理三個原則:
1、減少;我們需要減少後臺處理
2、延遲;當設備充電時候再去執行
3、合併;把多個處理任務合併在一起。
1、注意wakelock,根據情況可以使用Jobscheduler/Alarm替代
2、及時關閉不再需要的功能,如GPS、網絡請求超時設置
3、在使用wifi/充電狀態下執行某些任務
JobScheduler、主動/被動獲取狀態
四、Doze
https://developer.android.google.cn/training/monitoring-device-state/doze-standby.html?hl=zh-cn
Android 6.0 “打盹兒”
進入條件
設備未插接電源
處於靜止狀態一段時間
屏幕關閉
五、Standby
未主動使用應用、一段時間未觸摸應用進入
以下情況不會進入:
用戶顯式啓動應用。
應用當前有一個進程位於前臺(表現爲 Activity 或前臺服務形式,或被另一 Activity 或前臺服務佔用)。
應用生成用戶可在鎖屏或通知托盤中看到的通知。
通過運行以下命令強制應用進入應用待機模式:
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true
使用以下命令模擬喚醒應用:
$ adb shell am set-inactive <packageName> false
$ adb shell am get-inactive <packageName>
六、白名單
強制系統在低電耗模式之間循環切換:
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
<uses-permission-sdk-23
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>