工具介绍
监控电量广播
String ACTION_BATTERY_CHANGED = “android.intent.action.BATTERY_CHANGED”;
- 可获取电量信息 ,电池状态
Battery Historian
- Google推出的一款Android电量分析工具
- 可视化展示指标 ,耗电比例,执行时间,次数
- 支持5.0以上系统的电量分析
- 线下使用
测试方向
- 耗电场景 :复杂运算,视频播放
- 传感器相关: 使用时长,耗电量,发热
- 后台待机测试
Battery Historian使用
- 安装Battery Historian
- 导出电量信息
- adb shell dumpsys batterystats --reset(重置)
- adb shell dumpsys batterystats --enable full-wake-history (开始记录)
- adb bugreport bugreport.zip(导出记录,导出耗时长)
- 上传分析
- http://localhost:9999
- 上传导出的文件
- 安装失败备用方案:https://bathist.ef.lc/ (需要翻墙)
查看设备运行时能耗
- adb pull /system/framework/framework-res.apk
- 反编译 , xml —> power_profile
AOP方式
- hook某些使用了系统API会导致电量增加的地方 ,统计使用时长和使用次数
- 例如 打开了WakeLock的地方
优化方案总结
-
CPU时间片优化
- 查看cpu的使用情况 ,cpu使用过多耗电量也大
-
网络相关优化
- 请求时机和次数控制
- 数据压缩
- 禁止轮询
-
定位相关
- 网络定位替换GPS
-
界面相关
- 动画关闭
-
WakeLock相关
- 使用带参数的acquire,到时间会释放
- release
- finally 确保wakelock被释放
- 使用keepScreenOn代替使用WakeLock保持屏幕常亮
-
JobScheduler 任务
- 设置条件才执行任务(例如 : 充电时, wifi连接时)