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,它立即开始显示应用程序的估计能耗。您应该看到类似于下图的内容。

energy-profiler-L1_2x.png

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

  1. Event时间轴:显示应用程序中的活动在其生命周期中不同状态之间的转换。此时间轴还指示用户与设备的交互,包括屏幕旋转事件。
  2. Energy时间轴:显示应用程序的估计能耗。
  3. System时间轴:表示可能影响能耗的系统事件。

要查看CPU、网络和位置(GPS)资源以及相关系统事件的能源使用明细,请将鼠标指针放在Energy时间轴中的一个条上。

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

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

  • 唤醒锁是一种在设备进入睡眠状态时保持CPU或屏幕打开的机制。例如,播放视频的应用程序可能使用唤醒锁在没有用户与设备交互的情况下保持屏幕打开。请求唤醒锁不是一个能耗很高的操作,但是如果不释放唤醒锁,可能会导致屏幕或CPU保持开启的时间超过必要的时间,这会很快耗尽电池。
  • 您可以使用闹钟定期在应用程序上下文之外运行后台任务。当闹钟触发时,它可能会唤醒设备并运行高能耗代码。
  • 可以使用作业在指定条件(例如网络可用时)下执行操作。您可以使用JobBuilder创建作业,并使用JobScheduler计划作业。在许多情况下,建议的方法是使用带有JobScheduler的作业,而不是使用警报或唤醒锁。
  • 定位请求使用GPS传感器,这会消耗大量的电量。

Energy Profiler使您很容易找到应用程序使用这些功能的位置,以便您可以就如何使用这些功能做出明智的决定。当系统事件处于活动状态时,Energy Profiler将在Energy时间轴下方的System时间轴中一个颜色编码的条形图。唤醒锁用红色条表示,作业和闹钟用黄色条表示,位置事件用浅紫色条表示。

下图显示了使用Energy Profiler和代码编辑器来定位未释放唤醒锁的源代码。

energy-profiler-L2_2x.png

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

显示其他系统事件详细信息的方法与唤醒锁基本相同,在其详细信息窗格中包含特定于每种事件的信息。例如,Job Details窗格显示代码中计划作业和完成作业的部分的调用堆栈。

参考文档:

Android Developers: energy profiler


戈壁老王
143 声望64 粉丝

做为一个不称职的老年码农,一直疏忽整理笔记,开博记录一下,用来丰富老年生活,