Battery Historian 工具可深入分析设备随时间的电量消耗情况。在系统层面,该工具以 HTML 形式直观呈现系统日志中的电量相关事件。在应用层面,该工具提供各种数据,可帮助您识别耗电的应用行为。
本文档介绍了使用 Battery Historian 了解电量消耗模式的一些方法。本文档首先解释了如何解读 Battery Historian 报告的系统级数据。然后,介绍了如何使用 Battery Historian 诊断和排查您自己的应用与电量消耗相关的行为。最后,提供了 Battery Historian 可能特别有用的一些场景提示。
使用系统级视图
Battery Historian 工具提供各种应用和系统行为的系统级可视化视图,以及它们与随时间变化的电量消耗之间的关联。此视图(如图 1 所示)可以帮助您诊断和识别应用中的电量使用问题。

此图中特别值得注意的是代表电量水平的黑色水平向下趋势线,该线在 Y 轴上测量。例如,在电量水平线的开始处,大约上午 6:50,可视化图表显示电量水平相对急剧下降。
图 2 提供了该显示部分的特写。

在电量水平线的开始处,当电量急剧下降时,显示屏显示三件事正在发生:CPU 正在运行,一个应用已获得唤醒锁定,并且屏幕处于开启状态。通过这种方式,Battery Historian 可以帮助您了解当电量消耗高时正在发生哪些事件。然后,您可以针对应用中的这些行为,并调查是否可以进行相关的优化。
系统级可视化也可以提供其他线索。例如,如果它显示移动无线电频繁开启和关闭,则可能有机会通过 智能调度 API(例如 JobScheduler 或 Firebase Job Dispatcher)优化此行为。
下一部分将解释如何调查您自己的应用特有的行为和事件。
查看应用特有数据
除了系统级视图提供的宏观数据外,Battery Historian 还提供表格和一些针对设备上运行的每个应用的特定数据可视化。表格数据包括:
- 应用在设备上的预估电量使用情况。
- 网络信息。
- 唤醒锁定。
- 服务。
- 进程信息。
这些表格提供了有关您应用数据的两个维度。首先,您可以查看您的应用电量使用情况与其他应用相比的排名。为此,请点击“表格”下的“设备电量估算”表。本示例将检查一个名为 Pug Power 的虚构应用。

图 3 中的表格显示,Pug Power 是此设备上第九大电池电量消耗者,也是非操作系统应用中第三大消耗者。此数据表明此应用值得更深入地调查。
要查找特定应用的数据,请将其软件包名称输入到可视化图表左侧“应用选择”下的两个下拉菜单中的下方一个。

当您选择一个特定应用时,以下数据可视化类别会更改为显示应用特有数据,而不是系统级数据:
- SyncManager。
- 前台进程。
- 用户空间唤醒锁定。
- 顶部应用。
- JobScheduler。
- Activity Manager Proc。
SyncManager 和 JobScheduler 的可视化图表立即显示您的应用是否过于频繁地执行同步和任务。通过这样做,它们可以快速揭示优化应用行为以改善电池性能的机会。
您还可以获取更多应用特定的可视化数据,即“用户空间唤醒锁定”。要在 bug 报告中包含此信息,请在终端窗口中输入以下命令:
$ adb shell dumpsys batterystats --enable full-wake-history
图 5 和图 6 显示了 Pug Power 的数据:图 5 显示了应用特定数据的可视化图表,图 6 显示了相应的表格数据。


查看可视化图表,没有立即显示任何明显的内容。JobScheduler 行显示该应用没有安排任何任务。SyncManager 行显示该应用没有执行任何同步。
然而,检查表格数据中的“唤醒锁定”部分后发现,Pug Power 获取的唤醒锁定总计超过一小时。这种异常且耗费资源的行为可能导致该应用的高电量消耗。此信息有助于开发者确定可能非常有益的优化领域。在这种情况下,为什么该应用会获取如此多的唤醒锁定时间,以及开发者如何改善此行为?
Battery Historian 在其他方面的帮助
在许多其他情况下,Battery Historian 可以帮助您诊断改善电池行为的机会。例如,Battery Historian 可以告诉您您的应用是否正在:
- 过于频繁地触发唤醒闹钟(每 10 秒或更短)。
- 持续保持 GPS 锁定。
- 每 30 秒或更短时间调度任务。
- 每 30 秒或更短时间调度同步。
- 使用蜂窝无线电的频率超出您的预期。