电量优化

查看耗电

    手机  设置——耗电排行

    注册广播:intent.setAction(Intent.ACTION_BATTERY_CHANGED);获取电池电量,充电状态,电池状态等信息;

               这是针对手机整体的耗电量,而非特定app,故价值不大

    battery historisn:Google推出的一款android系统电量分析工具,支持5.0以上

                安装Docker

                安装battery historisn:docker -- run -p<port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999

                 导出电量信息:

                  adb shell dumpsys batterystats --reset   重置信息

                  adb shell dumpsys batterystats --enable full-wake-history  开始记录

                  adb bugreport bugreport.zip  导出

                  上传分析:

                  http://localhost:9999      或          https://bathist.ef.lc

基本套路总结:

CPU时间片:如果app导致cpu一直处于工作状态,无疑非常耗电,通过traceView或者CPU profile工具来获取app运行中的cpu信息,定位cpu占有异常的方法;同时减少后台应用的主动运行。

网络相关:控制发起网络请求的时机以及次数,在发起请求的时候要区分这个请求是否紧急、是否可以延迟,可以延迟的请求可以针对性地绑定到一起发送,这样可以减少网络被激活的时间和次数,而数据处理可以在传输之前进行压缩,这样网络传输的时间也会降低,且节约流量,最后,一定要禁止使用轮询的方式去做业务操作,轮询导致网络一直处于激活的状态。

定位相关:根据场景谨慎选择定位模式,在一些对精准度要求没那么高的场景下,可以使用低精度的模式,甚至考虑网络定位来代替GPS,如使用GPS,使用后务必及时关闭,减少更新频率

界面相关:离开界面后停止相关活动(动画等),如果处于后台,就不执行相关耗电操作

WakeLock:

JobScheduler(JobService):在符合某些条件时创建执行在后台的任务;把不紧急的任务放到更合适的时机批量处理

 

怎么做电量测试:电量相关的测试要相对难做一些,因为app在具体用户设备上的耗电量无法统计,每一个设备使用的硬件不一样,那么相关的功耗也就不一样。拿不到相对精确的值,我们就只能尽可能地增加多维的监控来辅助判断该app是否耗电。关于电量测试,我们可以分场景逐个突破,详细地说就是按照app的功能进行针对性的专项测试,利用手机设置里的电量统计功能作为判断的依据,操作某个功能一段时间之后,到设置里面去看电量消耗了多少,这样的方案相对直观一些,但是不那么精确。还可以采取battery historisn,这是Google推出的一款android系统电量分析工具,支持5.0以上,这个工具拿到的电量分析要相对精确一些,且更加丰富,我们可以通过它详细地获取到耗电组件,比如说GPS、蓝牙等的工作时间以及耗电量,它可以对单个app进行选择,也可以比对不同的电量日志信息,比如说优化前和优化后的详细信息,但是也只能在线下使用。因此在线下测试后需要加上一些线上的辅助监控,比如说耗电组件的使用次数,调用堆栈以及访问时间,这些也是用户线上相关的电量数据,如果有用户线上反馈的话,我们就可以通过这些信息来判断用户是不是有耗电的操作。

有哪些有效的电量优化手段:

因为我们不能精确地拿到线上的电量消耗,因此需要尽可能保证app在正常情况下不耗电,需要在线下优化好电量,对于网络请求我们要控制发起请求的时机和次数,将可以延迟的网络请求批量发送,减少网络被激活的时间和次数,压缩数据,减少发送时间,节约流量,同时禁止使用轮询的方式来做业务操作。对于传感器相关的操作,要谨慎选择合适的模式。基本这样做,就会比竞品少耗电了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值