《高性能Andorid开发》笔记 -- 硬件性能和电池寿命

能耗统计文件

反编译framework-res.apk得到的power_profile文件列举了该设备的硬件耗电数值,参考该文件可知道。
(注:power_profile为什么放在framework-res.apk里?大致反编译了framework-res,里面放的是系统资源,比如默认的系统图标等。因power_profile是静态数据,放这也算是系统资源数据。)

App唤醒设备的接口和方式:

WakeLock和Alarm
可以使用adb shell dumpsys batterystats 检测哪些app使用了上述唤醒方式。

系统的唤醒反抗:

Doze模式,推迟wakelock和alarm到闲置维护期。

Android M中 新feature:

系统休眠 standby,阻止不常用的app试图连接网络。可以使用adb shell dumpsys usagestats,该方法会列举所有应用的最近使用时间,使用时长等。

Android L 新feature:

JobSchedule:调度属于系统层级,唤醒设备可以做到和其他app保持同步,比如5个应用都需后台每分钟下载一张图表,五分钟可能会唤醒设备25次,但是有了Jobschedule,只需要5次。

基本耗电分析:

设置–> 电量管理

电能统计:

统计之前需要先做重置工作:
adb shell dumpsys batterystats –reset
开启报告全部wakelock的功能:
adb shell dumpsys batterystats –enable full-wake-history
显示上次充电后的所有电能数据:
adb shell dumpsys batterystats –charged
可视化工具:battery historian:
安装Docker后,运行docker run -p 8888:9999 gcr.io/android-battery-historian:2.1 –port 9999命令,
打开adb logreport > report.txt 生成的文件。
在Battery Historian中,最关心的是WakeLock的唤醒次数,因为WakeLock对耗电影响较大(强制不灭屏,后台开启服务等)