Analiza el uso de batería con Battery Historian

La herramienta Battery Historian proporciona estadísticas sobre el consumo de batería de un dispositivo en el tiempo. En todo el sistema, la herramienta visualiza los eventos relacionados con la batería en una representación HTML de los registros del sistema. Al analizar apps de manera específica, la herramienta proporciona una variedad de datos que pueden ayudarte a identificar los comportamientos que consumen demasiada batería.

En este documento, se describen algunas de las formas en las que puedes usar Battery Historian para conocer los patrones de consumo de batería. Al principio, se explica cómo leer los datos del sistema que brinda Battery Historian. Luego, se describe cómo usar Battery Historian para diagnosticar y solucionar los comportamientos de tu app relacionados con el consumo de batería. Por último, se bridan consejos sobre escenarios en los que Battery Historian podría ser particularmente útil.

Usa la vista de todo el sistema

La herramienta Battery Historian proporciona una visualización de todo el sistema de diferentes comportamientos de las apps y el sistema, junto con su correlación con el consumo de batería en el tiempo. La imagen de la figura 1 puede ayudarte a identificar y diagnosticar los problemas de uso de batería de tu app.

Figura 1: Visualización de Battery Historian de eventos de todo el sistema que afectan el consumo de batería

La línea negra horizontal que tiende hacia abajo representa el nivel de batería, que se mide sobre el eje Y, y es la que más nos interesa. Por ejemplo, al comienzo de la línea de Nivel de batería, aproximadamente a las 6:50 a.m., la imagen muestra una caída relativamente pronunciada en el nivel de batería.

La figura 2 proporciona un primer plano de esa parte de la imagen.

Figura 2: Acercamiento de la cronología de Battery Historian que va de 6:50 a.m. a 7:20 a.m.

Al comienzo de la línea de Nivel de batería, a medida que la batería baja abruptamente, la imagen muestra tres procesos: la CPU está funcionando, una aplicación obtuvo un bloqueo de activación y la pantalla está encendida. De esta manera, Battery Historian te ayuda a comprender qué eventos ocurren cuando el consumo de batería es mayor. Luego, puedes trabajar sobre esos comportamientos en tu app o investigar si puedes implementar optimizaciones.

La visualización de todo el sistema también puede proporcionar otras pistas. Por ejemplo, si muestra que la radio móvil se activa y desactiva con frecuencia, puedes optimizar este comportamiento con las API de programación inteligente, como JobScheduler o Firebase Job Dispatcher.

En la siguiente sección, se explica cómo investigar el comportamiento y los eventos específicos de tu app.

Consulta datos específicos de la app

Además de los macrodatos que brinda la vista de todo el sistema, Battery Historian también cuenta con tablas y datos específicos sobre cada app que se ejecuta en tu dispositivo. Estos son algunos de los datos de la tabla:

  • Uso de batería del dispositivo estimado de la app
  • Información de red
  • Bloqueos de activación
  • Servicios
  • Información sobre procesos

Las tablas proporcionan dos dimensiones de datos sobre tu app. En primer lugar, puedes ver cómo se posiciona tu app con respecto a otras en cuanto al consumo de batería. Para ello, haz clic en la tabla Estimaciones de uso de batería del dispositivo en Tablas. En este ejemplo, se examina una app ficticia llamada Pug Power.

Figura 3: Investiga qué apps consumen más batería.

La tabla de la figura 3 revela que Pug Power es el noveno consumidor más grande de batería de este dispositivo, y la tercera app más grande que no forma parte del SO. Estos datos indican que debe investigarse la app con mayor profunidad.

Para buscar los datos de una app específica, ingresa el nombre del paquete en el segundo de los dos menús desplegables que se ubican debajo de Selección de apps, en el sector izquierdo de la visualización.

Figura 4: Ingresa una app específica para ver sus datos.

Cuando seleccionas una app específica, las siguientes categorías de visualización cambiarán para mostrarte sus datos, en lugar de los datos del sistema:

  • SyncManager
  • Proceso en primer plano
  • Bloqueo de activación del espacio del usuario
  • App principal
  • JobScheduler
  • Procesos del administrador de actividades
Las visualizaciones de SyncManager y JobScheduler revelan de inmediato si la app realiza sincronizaciones o ejecuta tareas con mayor frecuencia que la necesaria. De esta manera, te permiten detectar oportunidades para optimizar el comportamiento de tu app y mejorar el rendimiento de la batería.

También puedes obtener más de datos de visualización específicos de la app con Bloqueo de activación del espacio del usuario. Para incluir esta información en el informe de errores, ingresa el siguiente comando en la ventana de tu terminal:

    $ adb shell dumpsys batterystats --enable full-wake-history
    

Nota: A partir de Android 6.0 (API nivel 23), la plataforma incluye la funcionalidad "Descanso", que impone ciertas optimizaciones en las apps. Por ejemplo, "Descanso" agrupa las tareas para que se ejecuten durante períodos de mantenimiento breves, sin importar cómo las programó JobScheduler.

Las figuras 5 y 6 muestran los datos de Pug Power: La figura 5 incluye los datos específicos de la app, mientras que la 6 incluye los datos tabulares correspondientes.

Figura 5: Visualización de datos de la app ficticia Pug Power

Figura 6: Datos tabulares de la app ficticia Pug Power

La visualización no brinda información evidente. La línea de JobScheduler indica que la app no tiene tareas programadas; la línea de SyncManager muestra que no realizó ninguna sincronización.

Sin embargo, el análisis del segmento Bloqueos de activación de los datos tabulares revela que Pug Power suma una hora de bloqueos de activación. Este comportamiento inusual y costoso podría ser la razón del elevado consumo de batería de la app. Esta información ayuda al desarrollador a enfocarse en las áreas que requieren optimización. En este caso, ¿por qué la app adquiere tanto tiempo de bloqueo de activación y cómo puede el desarrollador mejorar este comportamiento?

Otros casos en los que Battery Historian resulta útil

Battery Historian puede ayudarte a identificar oportunidades para mejorar el comportamiento relacionado con el consumo de batería en muchos otros casos. Por ejemplo, puede indicarte si tu app hace lo siguiente:

  • Inicia alarmas de activación con demasiada frecuencia (cada 10 segundos o menos).
  • Mantiene activado un servicio de GPS.
  • Programa tareas cada 30 segundos o menos.
  • Programa sincronizaciones cada 30 segundos o menos.
  • Usa la radio con más frecuencia de la esperada.