赞
踩
1、准备工作
磨刀不误砍柴工。开始优化工作之前,一定要确定“测试场景”和“测试用例”
(1)应用后台
——灭屏
——亮屏
(2)应用后台
分析埋点数据 -> 找出高频页面 -> 页面分类归纳 -> 总结出一系列场景
【备注】
<1>测试过程中,一定要拔掉充电线
<2>一定要进行“全功能”测试,以防遗漏。
2、优化手段
2.1 使用系统提供的battery信息进行排查
2.1.1 •获取电量日志
(1)4.4以下
adb shell dumpsys batteryinfo > d:/batterinfo.log
(2)4.4到5.0以下
adb shell dumpsys batterystats > d:/batterstats.log
(3)5.0及其以上
adb bugreport > d:/bugreport.txt
【备注】
<1>开启电量日志:adb shell dumpsys batterystats --enable full-wake-history
<2>重置电量日志:adb shell dumpsys batterystats –-reset
2.1.2 分析数据
(1)5.0以前
——分析方法:直接看log文件
——关注参数:PID wake time、PID Wake lock time、Wake lock、Proc 信息、Foreground时间、CPU消耗时间、Service信息
(2)5.0以后
——分析方法:通过battery-historian,生成更为详细的分析结果
——关注参数:Wake lock、Proc 信息、Foreground时间、CPU消耗时间、Service信息、GPU user time、wifi scan、wifi/net radio
2.1.3 优化调整
(1)wake lock的次数是否合理
(2)Service的启动次数、运行时长是否合理、是否及时关闭
(3)process的运行时长,是否及时关闭
(4)gps的使用是否合理
(5)网络数据传输
(6)调用手机硬件逻辑是否合理(wifi扫描,蓝牙使用,电量监控。。。)
2.2 使用Android Monitor监测具体进程
2.2.1 分析方法
——观察各个进程的cpu、network、内存、gpu曲线
2.2.2 处理手段
——从曲线中找出波峰规律,针对性优化
2.3 基于代码的排查
2.3.1 分模块屏蔽
——使用排除法来缩小范围,最终定位到问题所在
2.3.2 写日志记录
——在关键地方及可疑地方打上日志,分时段存储日志。这样可以清楚的观测到哪些进程在哪些时间段有活动迹象;看看有没有循环日志,或者耗时方法,再回到代码里去查看
2.3.3 排查定时执行的方法
——搜索代码里面的定时循环执行的方法,考量该方法的功耗;包括:Timer、handler.Postdelayed、ScheduledFutureTask、JobService、Animation、AnimationDrawable等
2.3.4 高耗电操作
——i/o操作,网络数据传输,gps使用,wifi扫描
3、优化方案总结
(1)GPS
——使用要谨慎,如精确度不高可用WiFi定位或者基站定位,可用;非要用的话,注意定位数据的复用和定位频率的阈值
(2)Process和Service
——按需启动,用完就退出
(3)网络数据交互
——减少网络网络请求次数和数据量;WiFi比手机网络省电
(4)CPU
——减少I/O操作(包括数据库操作),减少大量的计算
(5)减少手机硬件交互
——使用频率优化和选择低功耗模式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。