Inspecciona el uso de energía con el Generador de perfiles de energía

El Generador de perfiles de energía te ayuda a identificar en qué procesos tu app usa más energía de la necesaria.

Para ello, monitorea el uso de CPU, radio de la red y sensor de GPS, y muestra una visualización de cuánta energía usa cada uno de estos componentes. Además, el Generador de perfiles de energía te muestra casos de eventos del sistema (bloqueos de activación, alarmas, trabajos y solicitudes de ubicación) que pueden afectar el consumo de energía.

Sin embargo, el Generador de perfiles de energía no mide directamente el consumo de energía. En cambio, usa un modelo que estima el consumo de energía de cada recurso en el dispositivo.

Descripción general del Generador de perfiles de energía

El Generador de perfiles de energía se muestra como una fila en la ventana Profiler cuando ejecutas tu app en un dispositivo conectado o en Android Emulator con Android 8.0 (nivel de API 26) o versiones posteriores.

Para abrir el Generador de perfiles de energía, sigue estos pasos:

  1. Elige View > Tool Windows > Profiler o haz clic en Profile en la barra de herramientas.

    Si aparece el diálogo Select Deployment Target, elige el dispositivo en el que quieres implementar tu app para la generación de perfiles. Si conectaste un dispositivo mediante USB, pero no lo ves en la lista, asegúrate de haber habilitado la depuración por USB.

  2. Haz clic en cualquier lugar del cronograma de Energy para abrir el Generador de perfiles de energía.

Cuando abres el Generador de perfiles de energía, comienza a mostrarse inmediatamente el uso estimado de energía de tu app. Verás algo similar a lo que se muestra en la Figura 1.

Figura 1: Cronogramas en el Generador de perfiles de energía

Como se indica en la figura 1, en la vista predeterminada del Generador de perfiles de energía se incluyen los siguientes cronogramas:

  1. Cronograma de eventos: se muestran las actividades en tu app a medida que pasan por los diferentes estados en su ciclo de vida. En este cronograma también se le muestran al usuario las interacciones con el dispositivo, incluidos los eventos de rotación de pantalla.
  2. Cronograma de energía: Se muestra el consumo de energía estimado de tu app.
  3. Cronograma del sistema: se indican eventos del sistema que podrían afectar el consumo de energía.

Si deseas ver un desglose del uso de energía por parte de los recursos de CPU, red y ubicación (GPS), además de eventos del sistema relevantes, coloca el puntero del mouse sobre una barra en el cronograma Energy.

Cómo inspeccionar eventos del sistema: bloqueos de activación, trabajos y alarmas

Puedes usar el Generador de perfiles de energía para encontrar eventos del sistema que pueden afectar el consumo de energía, como bloqueos de activación, trabajos y alarmas:

  • Un bloqueo de activación es un mecanismo para mantener la CPU o la pantalla encendidas cuando el dispositivo, de otro modo, se suspendería. Por ejemplo, una app que reproduce video podría usar un bloqueo de activación para mantener la pantalla encendida cuando el usuario no interactúa con el dispositivo. Solicitar un bloqueo de activación no es una acción que requiera demasiada energía, pero no desactivarlo puede ocasionar que la pantalla o la CPU permanezcan encendidas durante más tiempo del necesario, lo que puede agotar la batería rápidamente. Para obtener más información, consulta la guía sobre cómo trabajar con bloqueos de activación.

  • Puedes usar alarmas para ejecutar tareas en segundo plano fuera del contexto de tu app en intervalos regulares. Cuando se activa una alarma, el dispositivo puede reactivarse y ejecutar código que requiera demasiada energía. Para obtener más información, consulta la guía sobre cómo trabajar con alarmas.

  • Puedes usar trabajos para realizar acciones en condiciones específicas, como cuando la red deja de estar disponible. Puedes crear trabajos con JobBuilder y programarlos con JobScheduler. En muchos casos, el enfoque recomendado consiste en usar trabajos con JobScheduler en lugar de alarmas o bloqueos de activación.

  • Las solicitudes de ubicación usan el sensor de GPS, que puede consumir cantidades significativas de energía. Para obtener más información para realizar solicitudes de ubicación eficientes en términos de energía, consulta Cómo optimizar la ubicación para ahorrar energía.

El Generador de perfiles de energía te ayuda a identificar cada vez que tu app usa estas funciones, de manera que puedas tomar decisiones informadas sobre cómo se usa cada una de ellas.

El Generador de perfiles de energía muestra una barra con código de color en el cronograma System debajo del cronograma Energy para el intervalo de tiempo en el que un evento del sistema está activo. Los bloqueos de activación se representan con una barra roja, los trabajos y las alarmas se indican con una barra amarilla, y los eventos de ubicación se muestran con una barra púrpura claro.

En la figura 2, se muestra el Generador de perfiles de energía y el editor de código abierto en el código fuente responsable de un bloqueo de activación no desactivado.

Figura 2: Cómo usar el Generador de perfiles de energía para encontrar un bloqueo de activación

  1. Si deseas abrir el panel System Event y ver detalles de los eventos, como los bloqueos de activación, selecciona un intervalo de tiempo en el cronograma Energy.
  2. Para abrir el panel Wake Lock Details y ver detalles sobre un bloqueo de activación específico, selecciónalo en el panel System Event.
  3. Para abrir el editor de código e ir directamente al código fuente de un bloqueo de activación, haz doble clic en la entrada del método de llamada en la parte superior de la pila de llamadas en el panel Wake Lock Details.
  4. La llamada que adquirirá el bloqueo de activación está destacada en el editor de fuente.

Las instrucciones para mostrar detalles sobre otros eventos del sistema son, básicamente, las mismas que para los bloqueos de activación, mientras que la información específica sobre cada tipo de evento se encuentra en su panel de detalles. Por ejemplo, en el panel Job Details se muestran las pilas de llamadas de las partes del código en las que el trabajo está programado y finalizado.