Android Studio 如何分析能耗活动

前面的小节我们学习了如何分析网络活动。本小节学习如何分析能耗活动。

1. Energy Profiler 概览

1.1 什么是 Energy Profiler

Energy Profiler 可帮助我们了解应用在哪里耗用了不必要的电量。

Energy Profiler 会监控 CPU、网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量。Energy Profiler 还会显示可能会影响耗电量的系统事件(唤醒锁定、闹钟、作业和位置信息请求)的发生次数。

Energy Profiler 并不会直接测量耗电量,而是使用一种模型来估算设备上每项资源的耗电量。

1.2 打开 Energy Profiler

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

依次选择 View > Tool Windows > Profiler 或点击工具栏中的 Profile 图标,如果 Select Deployment Target 对话框显示提示,请选择要将我们的应用部署到哪个设备上以进行性能剖析。

点击 Energy 时间轴中的任意位置以打开 Energy Profiler。当我们打开 Energy Profiler 时,它会立即开始显示应用的估算耗电量。系统会显示类似于下图的界面。

Energy Profiler 的默认视图包括以下时间轴:

  1. Event 时间轴:显示应用中的 Activity 在其生命周期内不断转换而经历各种不同状态的过程。此时间轴还会指示用户与设备的交互,包括屏幕旋转事件;

  2. Energy 时间轴:显示应用的估算耗电量;

  3. System 时间轴:显示可能会影响耗电量的系统事件。

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

2. 检查系统事件

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

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

  • 我们可以使用闹钟定期在应用上下文之外运行后台任务。当闹钟触发时,它可能会唤醒设备并运行耗电量很高的代码。

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

  • 位置信息请求使用 GPS 传感器,这会消耗大量电量。

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

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

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

  1. 要打开 System Event 窗格并显示唤醒锁定等事件的详细信息,请在 Energy 时间轴中选择一个时间范围。

  2. 要打开 Wake Lock Details 窗格并显示特定唤醒锁定的详细信息,请在 System Event 窗格中选择该唤醒锁定。

  3. 要打开代码编辑器并跳转到唤醒锁定的源代码,请在 Wake Lock Details 窗格中双击调用堆栈顶部的调用方法条目。

  4. 用于获取唤醒锁定的调用会在源代码编辑器中突出显示。

4. 小结

本节课程我们主要学习了如何分析能耗活动。本节课程的重点如下:

  • 掌握如何检查影响耗电量的系统事件。