使用 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 Proc。

SyncManager 和 JobScheduler 的可视化图表立即显示您的应用是否过于频繁地执行同步和任务。通过这样做,它们可以快速揭示优化应用行为以改善电池性能的机会。

您还可以获取更多应用特定的可视化数据,即“用户空间唤醒锁定”。要在 bug 报告中包含此信息,请在终端窗口中输入以下命令:

$ 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 秒或更短时间调度同步。
  • 使用蜂窝无线电的频率超出您的预期。