手机app的主要耗电场景有:
(2)wakelock:只要有应用拿到wakelock这个锁,系统就无法进入睡眠状态。频繁wakelock或者申请了wakelock没有释放,会导致耗电;
(3)wifiscan和wifilock:wifiscan和wifilock也会导致手机的wifi模块处于激活状态,频繁的wifiscan或者wifilock不释放,会导致耗电;
(4)sensor:传感器打开后会导致系统持续监听设备外围环境的数据变化,使用后不及时关闭,会导致耗电;
(5)network:大量的数据传输,或者长时间的移动网络数据传输导致radio长期处于活跃状态,会导致耗电;
(6)gps:gps也是一种传感器,定位中没有及时关闭,会导致耗电;
(7)业务层面,用户最核心基础的模块:
(8)新增的基础逻辑,倘若入口明显,潜在较大访问,必须保证性能;
(9)活动需要,因为活动上新的逻辑,存在较大的用户访问,需尽力提升用户体验;
(10)反馈体验不好的模块;
# 设置Historian在时间线上显示关于每个单独唤醒锁的详细信息,启用完整唤醒锁报告
# (注意,通过启用完全唤醒锁定报告,电池历史记录将在几个小时内溢出。使用此选项进行短时间测试(3-4小时))
adb shell dumpsys batterystats --enable full-wake-history
# 采集报告前将battery统计状态重置 adb shell dumpsys batterystats --reset
(4)若已连接数据线,则拔电数据线(且测试过程中,不应出现充电情况);
(5)在手机上对目标app执行相应场景操作;
(6)操作完成后,再次连接设备,执行以下命令:
adb shell dumpsys batterystats > xxx.txt # 因为bugreport时间比较长,我们放到后面执行来减少与前面dumpsys的数据的偏差 # 若Android 7.0及以上: adb bugreport bugreport.zip # 若Android 6.0及以下: adb bugreport > bugreport.txt
数据分析:
1、对于xxx.txt文本,可直接打开;
(1)打开txt文本后,查找目标app的包名,获取app的进程uid:
(2)再查找“Estimated power use (mAh)”,获取目标uid的耗电量:
2、对于bugreport.zip文件,可通过battery historian工具进行解析:
(1)在chrome浏览器打开:https://bathist.ef.lc/
(2)打开生成的bugreport.zip文件,再点击Submit,即可分析数据
(该文件放在运行adb命令的目录处,如C:Usersffff>adb bugreport>bugreport.zip,则文件生成在C:Usersffff 目录里)
参考:https://www.jianshu.com/p/2f144bf7fe51
参考:http://www.51testing.com/html/28/n-4456728.html