Inspecter la consommation d'énergie avec le Profileur d'énergie

Le Profileur d'énergie vous aide à déterminer où votre application utilise plus d'énergie que nécessaire.

Le Profileur d'énergie surveille l'utilisation du processeur, de la radio réseau et du capteur GPS. Il indique la quantité d'énergie utilisée par chacun de ces composants. Le Profileur d'énergie présente également les occurrences d'événements système (wakelocks, alarmes, tâches et requêtes de localisation) susceptibles d'affecter la consommation d'énergie.

Le Profileur d'énergie ne mesure pas directement la consommation d'énergie. Il utilise plutôt un modèle qui estime la consommation d'énergie de chaque ressource sur l'appareil.

Présentation du Profileur d'énergie

Le Profileur d'énergie apparaît sous la forme d'une ligne dans la fenêtre Profileur lorsque vous exécutez votre application sur un appareil connecté ou sur Android Emulator exécutant Android 8.0 (API 26) ou une version ultérieure.

Pour ouvrir le Profileur d'énergie, procédez comme suit :

  1. Sélectionnez View > Tool Windows > Profiler (Vue > Fenêtres d'outil > Profileur) ou cliquez sur Profile (Profil) dans la barre d'outils.

    Si vous y êtes invité par la boîte de dialogue Select Deployment Target (Sélectionner une cible de déploiement), choisissez l'appareil sur lequel déployer votre application à des fins de profilage. Si vous avez connecté un appareil via USB, mais qu'il ne figure pas dans la liste, assurez-vous d'avoir activé le débogage USB.

  2. Cliquez n'importe où dans la chronologie Énergie pour ouvrir le Profileur d'énergie.

Lorsque vous ouvrez le Profileur d'énergie, il commence immédiatement à afficher la consommation d'énergie estimée de votre application. Vous devriez voir quelque chose de semblable à la figure 1.

Figure 1. Chronologie dans le Profileur d'énergie.

Comme indiqué à la figure 1, la vue par défaut du Profileur d'énergie inclut les chronologies suivantes :

  1. Chronologie des événements : affiche les activités de votre application à mesure qu'elles passent d'un état à un autre dans leur cycle de vie. Cette chronologie indique également les interactions de l'utilisateur avec l'appareil, y compris les événements de rotation d'écran.
  2. Energy timeline (Chronologie de l'énergie) : affiche la consommation d'énergie estimée de votre application.
  3. System timeline (Chronologie du système) : indique les événements système susceptibles d'affecter la consommation d'énergie.

Pour afficher la répartition de la consommation d'énergie par processeur, réseau et ressources de localisation (GPS), ainsi que les événements système pertinents, placez le pointeur de la souris sur une barre de la chronologie Energy (Énergie).

Inspecter les événements système : wakelocks, tâches et alarmes

Vous pouvez utiliser le Profileur d'énergie pour rechercher des événements système pouvant affecter la consommation d'énergie, y compris des wakelocks, des tâches et des alarmes :

  • Le wakelock est un mécanisme qui permet de maintenir le processeur ou l'écran allumé lorsque l'appareil se mettrait autrement en veille. Par exemple, une application qui lit une vidéo peut utiliser un wakelock pour que l'écran reste allumé en l'absence d'interaction de l'utilisateur avec l'appareil. Demander un wakelock n'est pas une action énergivore, mais si vous ne le faites pas, l'écran ou le processeur peuvent rester allumés plus longtemps que nécessaire, ce qui peut rapidement décharger la batterie. Pour en savoir plus, consultez les conseils sur l'utilisation des wakelocks.

  • Les alarmes vous permettent d'exécuter des tâches en arrière-plan en dehors du contexte de votre application à intervalles réguliers. Lorsqu'une alarme se déclenche, elle peut allumer l'appareil et exécuter un code énergivore. Pour en savoir plus, consultez les conseils sur l'utilisation des alarmes.

  • Les tâches vous permettent d'effectuer des actions dans des conditions spécifiées, par exemple lorsque le réseau devient disponible. Vous créez des tâches avec JobBuilder et les planifiez avec JobScheduler. Dans de nombreux cas, il est recommandé d'utiliser des tâches avec JobScheduler plutôt que des alarmes ou des wakelocks.

  • Les requêtes de localisation utilisent le capteur GPS, qui peut consommer d'importantes quantités d'énergie. Pour savoir comment envoyer des requêtes de localisation économes en énergie, consultez Optimiser les services de localisation pour une meilleure autonomie.

Le Profileur d'énergie vous permet de déterminer facilement où votre application utilise chacune de ces fonctionnalités. Vous pouvez ainsi prendre des décisions éclairées sur la manière d'utiliser chacune de ces fonctionnalités.

Le Profileur d'énergie affiche une barre de couleur dans la chronologie System (Système) sous la chronologie Energy (Énergie) pour la période correspondant à un événement système actif. Les wakelocks sont représentés par une barre rouge, les tâches et les alarmes par une barre jaune et les événements de localisation par une barre violet clair.

La figure 2 montre le Profileur d'énergie et l'éditeur de code ouvert au code source responsable d'un wakelock non publié.

Figure 2. Utiliser le Profileur d'énergie pour rechercher un wakelock.

  1. Pour ouvrir le volet System Event (Événement système) et afficher les détails d'événements tels que des wakelocks, sélectionnez une période dans la chronologie Energy (Énergie).
  2. Pour ouvrir le volet Wake Lock Details (Détails du wakelock)et afficher les détails d'un wakelock spécifique, sélectionnez le wakelock dans le volet System Event (Événement système).
  3. Pour ouvrir l'éditeur de code et accéder au code source d'un wakelock, double-cliquez sur l'entrée de la méthode d'appel en haut de la pile d'appel dans le volet Wake Lock Details (Détails du wakelock).
  4. L'appel permettant d'obtenir le wakelock est mis en surbrillance dans l'éditeur source.

Les instructions permettant d'afficher les détails d'autres événements système sont essentiellement les mêmes que pour les wakelocks, avec des informations spécifiques à chaque type d'événement dans le volet de détails. Par exemple, le volet Job Details (Détails de la tâche) affiche les piles d'appels pour les portions du code où la tâche est planifiée et où elle est terminée.