Android测试电量与优化报告

前言,电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情。唯一可行的方案是使用第三方监测电量的设备,这样才能够获取到真实的电量消耗。

工具:Battery Historian, 是一款由Google提供的Android系统电量分析工具.使用Battery Historian需要搭建GO开发环境。需要更加直观的观察电量数据,还需要搭建Python开发环境。(参考文献:http://www.it610.com/article/5231420.htm)

通过Battery Historian获取了手机电量总情况后,研究手机电量使用情况,并找出项目对手机电量的使用情况,分析电量使用情况,并研究项目电量优化的策略。

Android测试电量与优化报告_第1张图片
测试手机app的电量使用情况
Android测试电量与优化报告_第2张图片
测试手机的电量使用汇总情况

主要指标解释

横坐标:时间周期,60秒为一个周期;

battery_level: 电池的电量情况;

plugged: 充电状态及充电的时长;

screen: 屏幕是否点亮及时间

top: 该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app,用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。

wake_lock*:  wake_lock 该属性是记录wake_lock模块的工作时间。是否有停止的时候等。

running: 界面的状态,主要判断是否处于idle的状态。用来判断无操作状态下电量的消耗。

wake_lock_in: wake_lock有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作,以及工作的时间。

data_conn:数据连接方式的改变,上面的edge是说明采用的gprs的方式连接网络的。此数据可以看出手机是使用2g,3g,4g还是wifi进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。

status:电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。这一栏记录了电池状态的改变信息。

phone_signal_strength:手机信号状态的改变。这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。

health:电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。这一栏记录电池状态在何时发生改变。

plug:充电方式,usb或者插座,以及显示连接的时间。这一栏显示了不同的充电方式对电量使用的影响。

补充:之前仅仅为项目电量情况进行一次系统诊断,但用户使用过程中出现的异常电量使用情况无法被统计与分析。所以对用户使用项目的持续诊断与分析是至关重要的。

为持续诊断设计策略时,发现新的问题:与应用的正常行为相比,持续监控电池电量会消耗更多电量。因此,比较合适的做法是只监控电池电量的显著变化(尤其是在设备进入或结束低电量状态的情况下)。比如 用户容易感知到的电量变化节点:低电量状态,手机电量过低自动关机,电池温度等异常状态下进行监控并将数据上传服务器。再在服务器中进行统计分析后,通知手机做出电量补救措施。(持续诊断操作步骤相当耗时,故可选)

Android测试电量与优化报告_第3张图片
判断手机充电状态

通过手机广播来接受到手机电池电量的显著变化:

// BatteryManager.BATTERY_STATUS_CHARGING 表示是充电状态

// BatteryManager.BATTERY_STATUS_DISCHARGING 放电中

// BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充电

// BatteryManager.BATTERY_STATUS_FULL 电池满

//充电类型 BatteryManager.BATTERY_PLUGGED_AC 表示是充电器,不是这个值,表示是 USB

//电池健康情况,返回也是一个数字

//BatteryManager.BATTERY_HEALTH_GOOD 良好

//BatteryManager.BATTERY_HEALTH_OVERHEAT 过热

//BatteryManager.BATTERY_HEALTH_DEAD 没电

//BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 过电压

//BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未知错误

电量优化建议: 

第一:项目存在大量的轮询请求接口。应该将其整合起来,减少CPU的消耗。

 第二(可选):项目的直播或音频是电量消耗大户,可判断用户是否处于充电状态,再获取用户电量,在某个临界点时,降低直播码率,提高观看直播时间。 

第三:清单文件application标签下keepScreenOn保持屏幕常亮模式不够完善,导致用户长时间无操作情况下,屏幕长时间 保持常亮。建议修改模式为:用户5分钟未操作状态下,屏幕变暗且屏幕不关闭。满足屏幕处于开启状态下节约用电。 

第四(可选):项目存在大量的图片展示,图片加载时会消耗大量的流量与电量。方案一:可判断用户是否处于充电 状态,再获取用户电量,在某个临界点时,降低加载图片码率,提高操作时间。 

第五:项目也有一些上传下载操作进行着,可采用高效下载策略,做到批量执行网络请求,尽量避免频繁的间隔网络请 求。判断哪些任务是不紧急的,可以交给Job Scheduler来处理,Job Scheduler集中处理收到的任务,选择合适的时间,合适的网 络,再一起进行执行。

结语: 测试电量与优化是一条漫长的道路,也希望大家有“把电量当成干粮”的意识,这样你所做的app也会更加优雅。

你可能感兴趣的:(Android测试电量与优化报告)