- 正确认识
- 方案介绍
- 测试相关
#开发情况概述
-
一般项目对
电量的重视度是不够的: 开发时也一直连接着手机, 无法确切知道电量下降了多少,下降有多快; -
电量消耗线上难以量化, 难以量化真实用户的耗电量, 难以拿到每个用户手上的设备能耗; 【耗电统计是一个系统组件, 伴随着系统运行的整个过程, 这个统计是基于软件层面实现的, 不同的
硬件模块配置了不同的参数,然后使用算法进行估算, 但是具体的参数值根据手机使用的不同硬件,也是有不同, 所以电量的消耗在线上难以量化】
#耗电量的测试方案 #####1. 手机系统设置——耗电排行
- 直观,但没有详细的数据,对解决问题没有太大帮助;
- 需要
找 特定场景 专项测试比如进入详情页里面,超过一段时间, 然后看耗电量增加了多少,来简单地判断这个场景是否耗电;
#####2. 注册电量相关的广播——ACTION_BATTERY_CHANGED
- 获取电池电量、充电状态、电池状态等信息 在Activity的onCreate()(或者其他时机)中编写这段代码, 即可获取到相关的信息:
//!!!!!!!
// 电池优化
//!!!!!!!
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
Intent intent = registerReceiver(null, filter);
LogUtils.i("battery 电池电量" + intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1));
上面这一段代码是通过
BatteryManager.EXTRA_LEVEL这个值
来获取手机当前的电池电量;
获取电池信息的工具主要是通过接收BatteryManager的广播来获取的,
BatteryManager里面有很多广播可以获取各种信息,
具体的信息种类可以看一下这篇文章;
- 方案评价:
· 价值不大: 针对手机整体的耗电量,而非特定的APP; 【无法针对性地锁定到具体的耗电APP】
·实时性较差,精度较低: 通过注册广播被动地接收通知;
#####3. Battery Historian
-
Google推出的一款Android系统
电量分析工具 -
支持5.0(API 21)及以上 系统的电量分析
-
方案评价: · 功能强大,推荐使用; · 可视化展示指标:耗电比例、执行时间 和 次数, 查看
特定APP的耗电组件使用情况等; · 适合线下使用;
#测试思路 - **由于 电量消耗线上难以量化, 难以量化真实用户的耗电量, 难以拿到每个用户手上的设备能耗; 因此, 我们需要在线下,** - **针对`特定耗电场景` 如:`复杂运算`、`视频播放`等 `比较耗电的模块`进行测试;**
- **注意`传感器`相关的使用:
使用时长、耗电量、使用后手机发热情况等;**
- 后台静默测试:
把APP放在后台一段时间,观察耗电量;
#Historian - **[Historian官网](https://github.com/google/battery-historian)** - **安装方式: 通过Docker安装, 比较简单方便; 下载软件直接安装即可,之后, 输入`docker -- run -p :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; 上传bugreport.zip即可, 上传分析备用网站:https://bathist.ef.lc
参考:
- 慕课网