Android电量优化---概述及方案选择

320 阅读3分钟
  • 正确认识
  • 方案介绍
  • 测试相关

#开发情况概述

  • 一般项目对电量重视度是不够的: 开发时也一直连接着手机, 无法确切知道电量下降了多少,下降有多快;

  • 电量消耗线上难以量化, 难以量化真实用户的耗电量, 难以拿到每个用户手上的设备能耗; 【耗电统计是一个系统组件, 伴随着系统运行的整个过程, 这个统计是基于软件层面实现的, 不同的硬件模块配置了不同的参数,然后使用算法进行估算, 但是具体的参数值根据手机使用的不同硬件,也是有不同, 所以电量的消耗在线上难以量化

#耗电量的测试方案 #####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








参考:

  • 慕课网