安卓App耗电量优化的一些经验总结

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)减少手机硬件交互

——使用频率优化和选择低功耗模式

你可能感兴趣的:(安卓,性能优化,耗电量优化)