Energy Profiler 可帮助您找到您的应用程序在哪些地方使用了过多的能源。
Energy Profiler 监控 CPU、网络无线电和 GPS 传感器的使用情况,并以可视化方式显示每个组件使用的能源量。 Energy Profiler 还向您显示可能影响能耗的系统事件(唤醒锁、警报、作业和位置请求)的发生情况。
Energy Profiler 不直接测量能源消耗。相反,它使用一个模型来估计设备上每种资源的能耗。
能源分析器概述
当您在连接的设备或运行 Android 8.0 (API 26) 或更高版本的 Android 模拟器上运行应用程序时, Energy Profiler 将在Profiler窗口中显示为一行。
要打开 Energy Profiler,请执行以下步骤:
-
选择“视图”>“工具窗口”>“探查器”或单击工具栏中的“探查器” 。
如果“选择部署目标”对话框出现提示,请选择要部署应用程序以进行分析的设备。如果您已通过 USB 连接设备但未看到该设备列出,请确保您已 启用 USB 调试。
-
单击能量时间线中的任意位置以打开能量分析器。
当您打开 Energy Profiler 时,它会立即开始显示您的应用程序的估计能源使用量。您应该看到类似于图 1 的内容。
图 1. Energy Profiler 中的时间线。
如图 1 所示,Energy Profiler 的默认视图包括以下时间线:
- 事件时间线:显示应用程序中的活动在生命周期中不同状态之间的转换。该时间线还指示用户与设备的交互,包括屏幕旋转事件。
- 能源时间线:显示您的应用程序的估计能源消耗。
- 系统时间线:指示可能影响能耗的系统事件。
要查看 CPU、网络和位置 (GPS) 资源的能源使用明细以及相关系统事件,请将鼠标指针放在 能源时间线中的栏上。
检查系统事件:唤醒锁、作业和警报
您可以使用 Energy Profiler 查找可能影响能耗的系统事件,包括唤醒锁、作业和警报:
-
唤醒锁是一种在设备进入睡眠状态时保持 CPU 或屏幕开启的机制。例如,播放视频的应用程序可以使用唤醒锁在用户没有与设备交互时保持屏幕打开。请求唤醒锁不是一个能源密集型操作,但未能释放唤醒锁可能会导致屏幕或 CPU 保持开启状态的时间超过必要的时间,从而快速耗尽电池电量。有关更多信息,请参阅使用唤醒锁的指南 。
-
您可以使用警报定期在应用程序上下文之外运行后台任务。当警报响起时,它可能会唤醒设备并运行耗能代码。有关更多信息,请参阅使用警报的指南 。
-
您可以使用作业在指定条件下执行操作,例如当网络可用时。您可以使用 创建工作
JobBuilder
并安排工作JobScheduler
。在许多情况下,建议的方法是使用带有JobScheduler
警报或唤醒锁的作业。 -
位置请求使用 GPS 传感器,这会消耗大量能量。有关如何发出节能定位请求的信息,请参阅 优化电池定位。
Energy Profiler 可让您轻松找到您的应用程序使用这些功能的位置,以便您可以就如何使用每个功能做出明智的决策。
能量分析器在系统时间线中的能量时间线下方 显示一个颜色编码条,表示系统事件处于活动状态的时间范围。唤醒锁用红色条表示,作业和警报用黄色条表示,位置事件用浅紫色条表示。
图 2 显示了 Energy Profiler 和代码编辑器,其中打开了负责未释放唤醒锁的源代码。
图 2.使用 Energy Profiler 查找唤醒锁。
- 要打开“系统事件”窗格并显示唤醒锁等事件的详细信息,请在“能量”时间线中选择一个时间范围。
- 要打开“唤醒锁详细信息”窗格并显示特定唤醒锁的详细信息,请在“系统事件”窗格中选择该唤醒锁。
- 要打开代码编辑器并跳转到唤醒锁的源代码,请双击“唤醒锁详细信息”窗格中调用堆栈顶部的调用方法条目。
- 获取唤醒锁的调用在源代码编辑器中突出显示。
显示其他系统事件详细信息的说明与唤醒锁基本相同,在其详细信息窗格中包含特定于每种事件的信息。例如,“作业详细信息”窗格显示计划作业和完成作业的代码部分的调用堆栈。