使用 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. 依次选择 View > Tool Windows > Profiler,或点击工具栏中的 Profile 图标

    Select Deployment Target 对话框显示提示时,请选择要将您的应用部署到哪个设备上以进行分析。如果您已通过 USB 连接设备但系统未列出该设备,请确保您已启用 USB 调试

  2. 点击 Energy 时间轴中的任意位置以打开 Energy Profiler。

当您打开 Energy Profiler 时,它会立即开始显示应用的估算耗电量。系统会显示类似于图 1 的界面。

图 1. Energy Profiler 中的时间轴。

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

  1. “Event”时间轴:显示应用中的 Activity 在其生命周期内不断转换而经历各种不同状态的过程。此时间轴还会指示用户与设备的交互,包括屏幕旋转事件。
  2. “Energy”时间轴:显示应用的估算耗电量。
  3. “System”时间轴:显示可能会影响耗电量的系统事件。

要查看 CPU、网络和位置信息 (GPS) 资源,以及相关系统事件的具体耗电量情况,请将鼠标指针放在 Energy 时间轴中的条形上方。

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

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

  • 唤醒锁定是一种机制,可在设备进入休眠模式时使 CPU 或屏幕保持开启状态。例如,播放视频的应用可以使用唤醒锁定,以便在用户未与设备交互时使屏幕保持开启状态。请求唤醒锁定不是一项耗电量很高的操作,但未撤消唤醒锁定会导致屏幕或 CPU 保持开启状态的时间超过必要时间,从而加快电池耗电速度。如需了解详情,请参阅有关使用唤醒锁定的指南。

  • 您可以使用闹钟定期在应用上下文之外运行后台任务。当闹钟触发时,它可能会唤醒设备并运行耗电量很高的代码。如需了解详情,请参阅有关使用闹钟的指南。

  • 您可以使用作业在指定条件下(例如恢复网络连接时)执行相关操作。您可以使用 JobBuilder 创建作业,并使用 JobScheduler 对这些作业进行调度。在许多情况下,建议您使用 JobScheduler 对作业进行调度,而不是使用闹钟或唤醒锁定。

  • 位置信息请求使用 GPS 传感器,这会消耗大量电量。要了解如何在发出位置信息请求时节省电量,请参阅优化电池的位置

借助 Energy Profiler,您可以轻松找到应用使用各项功能的位置,以便您就如何使用各项功能做出明智的决策。

Energy Profiler 会在 Energy 时间轴下的 System 时间轴中显示一个彩色编码的条形,以表示系统事件处于活动状态的时间范围。唤醒锁定用红色条形表示,作业和闹钟用黄色条形表示,位置信息事件用浅紫色条形表示。

图 2 显示了 Energy Profiler,并在代码编辑器中定位到了未释放唤醒锁定对应的源代码。

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

  1. 要打开 System Event 窗格并显示唤醒锁定等事件的详细信息,请在 Energy 时间轴中选择一个时间范围。
  2. 要打开 Wake Lock Details 窗格并显示特定唤醒锁定的详细信息,请在 System Event 窗格中选择该唤醒锁定。
  3. 要打开代码编辑器并跳转到唤醒锁定的源代码,请在 Wake Lock Details 窗格中双击调用堆栈顶部的调用方法条目。
  4. 用于获取唤醒锁定的调用会在源代码编辑器中突出显示。

有关显示其他系统事件详情的说明与唤醒锁定基本相同,只不过对应的详细信息窗格中提供了特定于各种事件的信息。例如,Job Details 窗格会显示调度作业以及完成作业的代码部分的调用堆栈。