25 votes

Comment Android calcule-t-il la consommation de batterie par les applications?

Comment Android mesure l'énergie utilisée par chaque composant matériel individuel? Comment Android mesure l'énergie utilisée par chaque processus individuel?

0 votes

Je suppose combien d'instructions sont exécutées en 1 seconde.

7 votes

@Algo : Il serait totalement trompeur de supposer qu'une application en arrière-plan qui utilise beaucoup de CPU consomme plus de batterie qu'une autre application qui utilise peu de CPU mais beaucoup de Wifi, de GPS et d'affichage.

0 votes

Si tel est le cas, alors vous pouvez obtenir un indice à partir du nombre d'autorisations qu'une application a acquises... juste une idée.

11voto

devstopfix Points 3560

Android suit les événements qui affectent la consommation de la batterie et stocke ces informations dans le fichier batterystats.bin. Quelques exemples :

  • durée pendant laquelle l'écran était allumé avec un réglage de luminosité spécifique
  • quelle application (ou processus non Android) et combien de temps a maintenu un verrouillage (empêche l'appareil de dormir)
  • utilisation du processeur par processus (application Android ou autre processus)
  • force du signal du téléphone
  • utilisation du GPS
  • etc.

Android calcule combien de puissance chaque application ou composant (par exemple, l'écran) consomme en fonction des informations de configuration incluses sur l'appareil par le fabricant.

Tout n'est pas mesuré, donc les statistiques peuvent parfois être trompeuses, mais cela s'améliore avec chaque nouvelle version de la plateforme Android.

Les statistiques de la batterie peuvent être extraites de l'appareil en utilisant :

adb shell dumpsys batterystats

Voici un extrait intéressant d'un article de Diane Hackborn avec plus de détails sur la consommation d'énergie des verrous de réveil :

Il y a deux façons de calculer la puissance des verrous de réveil.

  1. Sur certains chipsets, le simple maintien d'un verrouillage doit empêcher le processeur de passer en mode sommeil profond. Dans l'utilisation rapportée de la batterie, cette consommation d'énergie supplémentaire sera répartie entre toutes les applications qui maintiennent des verrous de réveil.

  2. Même si le verrouillage de réveil lui-même ne consomme pas d'énergie, le maintien d'un verrouillage de réveil dans une application peut permettre à d'autres applications de fonctionner et au processeur de s'exécuter alors qu'elles ne le feraient pas autrement. (Par exemple, une application peut avoir une boucle { dormir(1); faire quelque chose; } qui ne s'exécuterait pas si aucun verrouillage de réveil n'est maintenu.) Pour résoudre ce problème, la moitié de l'utilisation du processeur des applications est attribuée à celles qui maintiennent des verrous de réveil.

0 votes

Pouvez-vous fournir des sources/références qui prouvent votre réponse ?

0 votes

Toutes les informations proviennent du lien fourni vers le fil google+ par le développeur Google familiarisé avec ce domaine.

1 votes

La commande correcte pour les nouveaux appareils (pas sûr de quelle API) devrait être : adb shell dumpsys batterystats, ou (si vous voulez l'enregistrer dans un fichier) : adb shell dumpsys batterystats > batterystats.txt

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X