使用 Energy Profiler 检查能量使用情况

Energy Profiler 可帮助您查找应用中哪些地方的能量使用量超过了必要水平。

Energy Profiler 会监控 CPU、网络无线电和 GPS 传感器的使用情况,并显示每个组件使用多少能量的可视化效果。Energy Profiler 还会显示可能影响能耗的系统事件(唤醒锁、闹钟、作业和位置请求)的发生情况。

Energy Profiler 不会直接测量能耗。相反,它使用一个模型来估计设备上每个资源的能耗。

Energy Profiler 概述

当您在连接的设备或运行 Android 8.0(API 26)或更高版本的 Android 模拟器上运行应用时,Energy Profiler 会作为 **Profiler** 窗口中的一行显示。

要打开 Energy Profiler,请按照以下步骤操作

  1. 选择 **查看 > 工具窗口 > Profiler** 或点击工具栏中的 **分析**

    如果 **选择部署目标** 对话框提示您,请选择要部署应用以进行分析的设备。如果您已通过 USB 连接设备但未在列表中看到它,请确保已启用 USB 调试

  2. 点击 **能量** 时间线上的任意位置以打开 Energy Profiler。

打开 Energy Profiler 后,它会立即开始显示应用的预计能量使用情况。您应该会看到类似于图 1 的内容。

图 1. Energy Profiler 中的时间线。

如示意图 1 所示,Energy Profiler 的默认视图包括以下时间线

  1. 事件时间线:显示应用在生命周期中转换到不同状态时的活动。此时间线还指示用户与设备的交互,包括屏幕旋转事件。
  2. 能量时间线:显示应用的预计能量消耗。
  3. 系统时间线:指示可能影响能耗的系统事件。

要查看 CPU、网络和位置(GPS)资源的能量使用细分,以及相关的系统事件,请将鼠标指针悬停在 **能量** 时间线上的条形图上。

检查系统事件:唤醒锁、作业和闹钟

您可以使用 Energy Profiler 查找可能影响能耗的系统事件,包括唤醒锁、作业和闹钟

  • 唤醒锁唤醒锁是一种机制,用于在设备原本要进入睡眠状态时保持 CPU 或屏幕处于开启状态。例如,播放视频的应用可能会使用唤醒锁在没有用户与设备交互时保持屏幕开启状态。请求唤醒锁不是一项耗能的操作,但未能释放唤醒锁会导致屏幕或 CPU 保持开启状态的时间过长,这会导致电池电量快速耗尽。有关更多信息,请参阅有关使用唤醒锁的指南。

  • 您可以使用闹钟在应用的上下文中以定期间隔运行后台任务。当闹钟响起时,它可能会唤醒设备并运行耗能的代码。有关更多信息,请参阅有关使用闹钟的指南。

  • 您可以使用作业在指定条件下执行操作,例如网络可用时。您可以使用JobBuilder创建作业,并使用JobScheduler安排作业。在许多情况下,建议使用JobScheduler中的作业,而不是闹钟或唤醒锁。

  • 位置请求使用 GPS 传感器,这会消耗大量能量。有关如何进行节能位置请求的信息,请参阅优化位置以节省电池电量

Energy Profiler 使您能够轻松找到应用在哪些地方使用了这些功能,以便您可以根据情况做出明智的决策。

Energy Profiler 在 **能量** 时间线下方的 **系统** 时间线中显示了一个彩色条形图,用于显示系统事件处于活动状态的时间范围。唤醒锁用红色条形表示,作业和闹钟用黄色条形表示,位置事件用浅紫色条形表示。

图 2 显示了 Energy Profiler 和代码编辑器,后者打开到负责未释放唤醒锁的源代码。

图 2. 使用 Energy Profiler 查找唤醒锁。

  1. 要打开 **系统事件** 窗格并显示唤醒锁等事件的详细信息,请在 **能量** 时间线上选择一个时间范围。
  2. 要打开 **唤醒锁详细信息** 窗格并显示特定唤醒锁的详细信息,请在 **系统事件** 窗格中选择唤醒锁。
  3. 要打开代码编辑器并跳转到唤醒锁的源代码,请双击 **唤醒锁详细信息** 窗格中调用堆栈顶部的调用方法的条目。
  4. 获取唤醒锁的调用在源代码编辑器中突出显示。

显示其他系统事件详细信息的说明与唤醒锁基本相同,其详细信息窗格中包含特定于每种事件的信息。例如,**作业详细信息** 窗格会显示安排作业和完成作业的代码部分的调用堆栈。