Analyser la consommation avec Battery Historian

Cet outil fournit des informations sur l'utilisation de la batterie d'un appareil au fil du temps. Au niveau du système, l'outil affiche les événements liés à l'alimentation à partir des journaux système dans une représentation HTML. Au niveau de l'application, l'outil fournit diverses données qui permettent d'identifier le comportement de l'application qui décharge la batterie.

Ce document décrit certaines des méthodes que vous pouvez utiliser pour en savoir plus sur les utilisations de la batterie. Il explique d'abord comment lire les données du système rapportées par Battery Historian. Ensuite, il présente les différentes façons dont vous pouvez utiliser Battery Historian pour diagnostiquer et résoudre les problèmes liés au comportement de votre application concernant l'utilisation de la batterie. Enfin, il fournit plusieurs conseils sur les scénarios dans lesquels Battery Historian peut être particulièrement utile.

Utiliser la vue système

L'outil Battery Historian fournit une visualisation au niveau du système de divers comportements d'applications et de systèmes, ainsi que leur corrélation avec l'utilisation de la batterie au fil du temps. Cette vue, illustrée dans la figure 1, peut vous aider à diagnostiquer et à identifier les problèmes d'alimentation de votre application.

Affichage d'événements système ayant un impact sur la consommation.
Figure 1 : Affichage d'événements système ayant un impact sur la consommation.

Dans cette figure, il est intéressant d'étudier la courbe de tendance noire, horizontale et descendante représentant le niveau de la batterie, mesuré sur l'axe y. Par exemple, au tout début de la ligne du niveau de la batterie, vers 6h50, la visualisation montre une baisse relativement forte du niveau de la batterie.

La figure 2 présente un gros plan de cette partie de l'écran.

Gros plan sur la chronologie de Battery Historian entre 6h50 et 7h20.
Figure 2 : Gros plan sur la chronologie de Battery Historian entre 6h50 et 7h20.

Au tout début de la ligne représentant le niveau de la batterie, l'affichage met en évidence trois éléments : le processeur est en cours d'exécution, une application a acquis un wakelock, et l'écran est allumé. De cette manière, Battery Historian vous aide à comprendre les événements qui se produisent lorsque l'utilisation de la batterie est élevée. Vous pouvez ensuite cibler ces comportements dans votre application et déterminer comment les optimiser.

La visualisation au niveau du système peut également fournir d'autres indices. Par exemple, si elle indique que le signal radio est fréquemment désactivé, puis réactivé, vous pouvez peut-être optimiser ce comportement grâce aux API de planification intelligentes telles que JobScheduler ou Firebase Job Dispatcher.

La section suivante explique comment examiner le comportement et les événements propres à votre application.

Afficher les données spécifiques à l'application

En plus des données au niveau de la macro fournies par la vue du système, Battery Historian fournit des tableaux et une visualisation des données spécifiques à chaque application exécutée sur votre appareil. Les données tabulaires incluent :

  • la consommation estimée de l'application sur l'appareil ;
  • les informations sur le réseau ;
  • les wakelocks ;
  • les services ;
  • les informations sur le processus.

Les tableaux fournissent deux dimensions de données sur votre application. Tout d'abord, vous pouvez comparer les performances de consommation de votre application à celles d'autres applications. Pour cela, cliquez sur le tableau Device Power Estimates (Estimations de l'alimentation de l'appareil) sous Tables (Tableaux). Cet exemple examine une application fictive qui s'appelle Pug Power.

Détermination des applications qui consomment le plus d'énergie.
Figure 3 : Détermination des applications qui consomment le plus d'énergie.

Le tableau de la figure 3 montre que Pug Power est le neuvième plus grand consommateur d'énergie sur cet appareil et la troisième plus grande application qui ne fait pas partie de l'OS. Ces données suggèrent que cette application nécessite un examen plus approfondi.

Pour consulter les données d'une application spécifique, saisissez le nom du package associé dans le menu déroulant inférieur sous App Selection (Sélection d'une application), situé à gauche de la visualisation.

Saisie d'une application spécifique dont vous souhaitez afficher les données.
Figure 4 : Saisie d'une application spécifique dont vous souhaitez afficher les données.

Lorsque vous sélectionnez une application spécifique, les catégories de visualisation de données suivantes changent de façon à afficher des données spécifiques à l'application au lieu des données du système :

  • SyncManager
  • Processus au premier plan
  • Userspace Wakelock
  • Meilleure application
  • JobScheduler
  • Activity Manager Proc (Processus du gestionnaire d'activités)

Les visualisations SyncManager et JobScheduler indiquent immédiatement si votre application effectue des synchronisations et exécute des tâches plus souvent que nécessaire. De cette façon, elles peuvent rapidement identifier une possibilité d'optimisation du comportement de votre application pour améliorer les performances de la batterie.

Vous pouvez également obtenir un autre élément de données de visualisation spécifique à l'application : Userspace Wakelock. Pour inclure ces informations dans le rapport de bug, saisissez la commande suivante dans votre fenêtre de terminal :

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

Les figures 5 et 6 illustrent les données de Pug Power. La figure 5 montre la visualisation des données spécifiques à l'application, et la figure 6 les données tabulaires correspondantes.

Visualisation des données de l'application fictive Pug Power.
Figure 5 : Visualisation des données de l'application fictive Pug Power.


Données tabulaires de l'application fictive Pug Power.

Figure 6 : Données tabulaires de l'application fictive Pug Power.

À première vue, la visualisation ne montre rien de particulier. La ligne JobScheduler indique qu'aucune tâche n'est planifiée pour l'application. La ligne SyncManager indique que l'application n'a effectué aucune synchronisation.

Toutefois, en examinant le segment Wakelocks des données tabulaires, il apparaît que Pug Power acquiert des wakelocks sur un total d'une heure. Ce comportement inhabituel et coûteux peut expliquer la haute consommation de l'application. Cette information permet au développeur de cibler un domaine dans lequel l'optimisation peut être très utile. Dans ce cas, pourquoi l'application acquiert-elle autant de wakelocks, et comment le développeur peut-il améliorer ce comportement ?

Autre cas où Battery Historian peut être utile

De nombreux cas de figure peuvent vous aider à diagnostiquer des améliorations possibles du comportement de la batterie. Par exemple, Battery Historian peut vous indiquer si votre application :

  • envoie des alarmes wakeup trop fréquentes (au maximum toutes les 10 secondes) ;
  • maintient le verrouillage du GPS en permanence ;
  • planifie des tâches au maximum toutes les 30 secondes ;
  • planifie des synchronisations au maximum toutes les 30 secondes ;
  • utilise la cellule GSM plus souvent que prévu.