使用 Battery Historian 分析功耗

Battery Historian 工具可以深入了解设备随时间推移的电池消耗情况。在系统范围内,该工具以 HTML 表示形式可视化系统日志中的电源相关事件。在应用特定级别,该工具提供各种数据,可以帮助您识别耗电的应用行为。

本文档介绍了一些您可以使用 Battery Historian 来了解电池消耗模式的方法。本文档首先解释如何阅读 Battery Historian 报告的系统范围数据。然后,它介绍了您可以使用 Battery Historian 来诊断和解决您自己的应用与电池消耗相关的行为的方法。最后,它提供了一些 Battery Historian 可能特别有用的场景方面的技巧。

使用系统范围视图

Battery Historian 工具提供系统范围内的可视化视图,展示各种应用和系统行为及其与电池消耗随时间的关联。如图 1 所示,此视图可以帮助您诊断和识别应用的耗电问题。

Battery Historian’s display of system-wide events affecting power
  consumption.
图 1. Battery Historian 显示影响功耗的系统范围内的事件。

此图中特别值得关注的是表示电池电量的黑色水平下降趋势线,该线在 y 轴上进行测量。例如,在电池电量线的起始位置,大约上午 6:50,可视化显示电池电量下降相对较快。

图 2 提供了该显示部分的特写。

A close-up of the Battery Historian timeline from roughly 6:50 AM to 7:20 AM.
图 2. Battery Historian 时间线的特写,大约从上午 6:50 到上午 7:20。

在电池电量线开始时,随着电池电量急剧下降,显示屏显示发生了三件事:CPU 正在运行,某个应用已获取唤醒锁,并且屏幕处于开启状态。通过这种方式,Battery Historian 可以帮助您了解在电池消耗量较高时发生的事件。然后,您可以针对应用中的这些行为,并调查是否存在可以进行的相关优化。

系统范围内的可视化视图还可以提供其他线索。例如,如果它显示移动无线电频繁地开启和关闭,则可能有机会通过智能调度 API(例如 JobScheduler 或 Firebase Job Dispatcher)来优化此行为。

下一节将解释如何调查特定于您自己应用的行为和事件。

查看应用特定数据

除了系统范围视图提供的宏观数据外,Battery Historian 还提供表格和一些特定于设备上运行的每个应用的数据可视化。表格数据包括:

  • 应用在设备上的估计功耗。
  • 网络信息。
  • 唤醒锁。
  • 服务。
  • 进程信息。

这些表格提供了关于您应用的两维数据。首先,您可以查看应用的功耗排名与其他应用相比如何。为此,请点击表格下的设备功耗估计表格。此示例检查名为 Pug Power 的虚拟应用。

Investigating which apps consume the most power.
图 3. 调查哪些应用消耗的电量最多。

图 3 中的表格显示,Pug Power 是此设备上第九大耗电应用,也是非操作系统组件中第三大耗电应用。此数据表明此应用需要更深入的调查。

要查找特定应用的数据,请将其包名输入可视化视图左侧下方的两个下拉菜单中的下部菜单(位于应用选择下)。

Entering a specific app whose data to view.
图 4. 输入要查看其数据的特定应用。

选择特定应用后,以下数据可视化类别将更改为显示应用特定数据,而不是系统范围的数据:

  • SyncManager。
  • 前台进程。
  • 用户空间唤醒锁。
  • 顶级应用。
  • JobScheduler。
  • Activity Manager 进程。

SyncManager 和 JobScheduler 可视化视图会立即显示您的应用是否执行同步和执行作业的频率高于必要频率。这样做可以快速发现优化应用行为以提高电池性能的机会。

您还可以获取另一部分应用特定可视化数据,即用户空间唤醒锁。要在错误报告中包含此信息,请在终端窗口中输入以下命令:

$ adb shell dumpsys batterystats --enable full-wake-history

图 5 和图 6 显示了 Pug Power 的数据:图 5 显示了应用特定数据的可视化,图 6 显示了相应的表格数据。

Visualization of data for fictional app Pug Power.
图 5. 虚拟应用 Pug Power 的数据可视化。


Tabular data for the fictional Pug Power app.

图 6. 虚拟应用 Pug Power 的表格数据。

查看可视化视图并没有立即显示任何明显的内容。JobScheduler 线显示该应用没有计划的作业。SyncManager 线显示该应用未执行任何同步。

但是,检查表格数据的唤醒锁部分显示,Pug Power 获取的唤醒锁总时长超过一小时。这种异常且代价高昂的行为可能是该应用高功耗的原因。此信息可帮助开发者确定可能大幅改进的优化区域。在这种情况下,应用为什么获取如此多的唤醒锁时间,以及开发者如何改善这种行为?

Battery Historian 可以提供帮助的其他情况

Battery Historian 可以帮助您诊断改进电池行为机会的许多其他情况。例如,Battery Historian 可以告诉您您的应用是否:

  • 过于频繁地触发唤醒闹钟(每 10 秒或更短时间)。
  • 持续保持 GPS 锁定。
  • 每 30 秒或更短时间调度作业。
  • 每 30 秒或更短时间调度同步。
  • 比您预期的更频繁地使用蜂窝无线电。