文章目录




参考 Google 官方文档 :​ ​​优化电池续航时间​






一、Battery Historian 环境要求



在 ​​【Android 电量优化】电量优化 ( 耗电量测试 | Battery Historian 简介 | apt 源更新 | Docker 安装 | Battery Historian 安装 )​​ 博客中主要进行了 VMWare 虚拟机环境下 Ubuntu 18.04.4 系统中安装 Battery Historian ;

在 ​​【Android 电量优化】电量优化 ( 获取电量分析报告 | 阿里云服务器搭建 Battery Historian | 上传并生成分析报告 )​​ 博客中 , 讲解了在阿里云服务器上搭建 Battery Historian , 并在本地导出手机的电量报告 , 使用该工具分析电量时 , 每一步操作响应都很慢 ;



在之前使用 Battery Historian 时 , 搭建好环境之后 , 访问很慢 , 找了半天原因 , 发现使用 Battery Historian 必须翻墙 , 否则基本无法使用该工具进行电量分析 , 卡了半天 ; 既然翻墙的话 , 那么服务器和本地都翻墙吧 ;




这里给出最佳实践 :​ ​必须翻墙 ;​ 之前访问巨慢 , 发现是没有翻墙的原因 ;



① 服务器可翻墙 :​ 在阿里云香港服务器上搭建 Battery Historian ;

② 本地电脑翻墙 :​ 本地访问 ​​http://8.210.151.183:9999/​​ 地址 , 必须翻墙 , 否则无法使用 ;






二、上传电量报告



必须翻墙才能正常使用 , 否则这里点击 Browse , 选择文件后 , 没有任何响应 ;



1 . 选择文件并上传 :​ 访问 ​​http://8.210.151.183:9999/​​ 地址 , 点击页面中的 Browse 按钮 , 从本地磁盘中选择 bugreport.txt 或 bugreport.zip 文件 , 选择完毕后 , 点击右侧的 Submit 按钮 , 提交上传 ;

【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_服务器



2 . 等待上传完成 :​ 等待上传完毕 , 这个上传的比较慢 , 大概几分钟吧 ;

【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_服务器_02



3 . 分析阶段 :​ 这个分析阶段很短 , 半分钟左右 ;

【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_5g_03



4 . 查看生成的报告 :​ 在下面的图标中可以分析出每个硬件设备的激活时间 , 及耗电量 ;

【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_服务器_04



5 . 选择不同的应用进程对应的报告 :​ 点击 App Selection 可以选择不同的应用 , 进行分析 ;

【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_上传_05






三、Battery Historian 电量分析报告



1 . 电量分析报告 :

① 报告内容 :​ 该报告中分析的是整个系统的各个硬件模块的耗电量 , 不是针对某一个应用的报告 ;

② 起始时间 :​ 从调用 adb shell dumpsys batterystats --reset 方法重置电池状态开始 ;

③ 终止时间 :​ 到调用 adb bugreport bugreport.zip 导出电量报告结束 ;





2 . 报告中的各项指标 :



【Android 电量优化】电量优化 ( Battery Historian 环境要求  | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )_Android 电量优化_06

Reboot :​ 重启 ;

CPU running :​ CPU 运行耗电量 ; 这个一般是一直再运行耗电的 , 无法分析出是哪个 APP 消耗了多少 CPU ;

Userspace wakelock ( all ) :​ 用户拿到 wakelock , 保持屏幕不息屏的状态 ;

Screen :​ 屏幕耗电 , 没有耗电的状态 , 说明屏幕处于息屏状态 , 有耗电 , 说明屏幕处于唤醒状态 ;

Plugged :​ 是否处于充电状态 ;

黑色的线 :​ 表示电量值 , 0 ~ 100% , 使用时一直在掉 , 充电时 , 一直在提高 ;

Battery Level :​ 每消耗 1% 的电量 , 提示一次 ; 可以判断每 1% 的电量使用了多长时间 ;




3 . 查看指定应用的耗电量 :​ 在 App Selection 中选择对应的应用进程 ID , 可以查看指定应用的电量消耗 ;






四、电量优化三原则



电量优化三原则 :



① 减少操作 :​ 减少后台处理的次数 , 减少多于操作 ; 如下载数据时 , 如果有缓存数据 , 使用缓存数据 , 尽量少启用 WIFI 或 5G 模块 , 蓝牙连接时 , 记住蓝牙地址 , 尝试直接连接这个蓝牙 , 不要每次都启动蓝牙搜索 , 该操作功耗巨大 ;

② 推迟操作 :​ 有些操作是否可以在充电时完成 , 如软件更新 , 数据备份云端等 , 获取最新版本号 , 缓存云端数据 , 尽量都在插着数据线时进行 ; 能充电时执行就在充电时执行 , 能在 WIFI 执行 , 就不再 5G 情况下执行 ;

③ 合并操作 :​ 将启用硬件设备模块的操作 , 集中执行 , 如获取位置 , 上传下载 , 一次启动硬件模块 , 密集执行多个任务 , 不要隔一段时间唤醒一次 , 只执行单个工作 ;






五、电量优化注意事项



电量优化注意事项 :



① Wakelock 尽量少的使用​ , 使用 JobScheduler / Alarm 替代前者 ;

② 硬件及时释放 :​ 对于硬件设备的调用请求 , 使用完毕后及时关闭 , 如 GPS , 蓝牙 , WIFI 等模块 , 不要长时间处于激活状态 , 用完就关闭释放 ;

③ 任务执行环境优先级 :​ 某些不是很着急的任务 , 尽量在充电状态下执行 , 充电 > 不充电 , WIFI > 2G/3G/4G/5G ;