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


24

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


Je suppose que combien d'instructions sont effectuées en 1 seconde.
AZ_

6
@Algo: Il sera totalement trompeur de supposer qu'une application d'arrière-plan qui utilise beaucoup de CPU est plus gourmande en batterie qu'une autre application qui utilise peu de CPU mais beaucoup de Wifi et de GPS et d'affichage.
Lie Ryan

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

@LieRyan dans les statistiques de la batterie, le wifi, le gps, le bluetooth, etc. ne sont-ils pas calculés comme leur propre "consommateur" de la batterie?
Ryan Conrad

Réponses:


11

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

  • la durée de l'écran était allumée avec un paramètre de dureté spécifique
  • quelle application (ou processus d'application non Android) et combien de temps a maintenu un verrou de réveil (empêche l'appareil de dormir)
  • Utilisation du processeur par processus (application Android ou autre processus)
  • puissance du signal du téléphone
  • Utilisation du GPS
  • etc.

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

Tout n'est pas mesuré, les statistiques peuvent donc parfois être trompeuses, mais elles s'améliorent avec chaque version de la plate-forme Android.

Les statistiques de la batterie peuvent être vidées de l'appareil en utilisant:

adb shell dumpsys batterystats

Voici un fragment intéressant d'un article de Diane Hackborn avec plus de détails sur la consommation d'énergie des serrures de sillage:

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

  1. Sur certains chipsets, le simple fait de maintenir un verrou de réveil doit empêcher le processeur de se mettre en veille profonde. Dans l'utilisation de la batterie signalée, cette consommation d'énergie supplémentaire sera répartie entre toutes les applications disposant de verrous de réveil.

  2. Même si le verrou de réveil lui-même n'entraîne pas de consommation d'énergie, le maintien d'un verrou de réveil dans une application peut permettre à d'autres applications de s'exécuter et au processeur alors qu'elles ne le feraient pas autrement. (Par exemple, certaines applications peuvent avoir une boucle {sleep (1); do something;} qui ne s'exécuterait pas si aucun verrou de réveil n'est maintenu.) Pour résoudre ce problème, la moitié de l'utilisation du processeur des applications est distribuée pour être blâmée. ceux qui détiennent des verrous de sillage.


pouvez-vous fournir des sources / références prouvant votre réponse?
diimdeep

Toutes les informations proviennent du lien fourni vers le fil google + par un développeur Google familier avec ce domaine.
Paweł Nadolski

1
La commande correcte pour les nouveaux appareils (dont vous ne savez pas de quelle API) devrait être: adb shell dumpsys batterystats, ou (au cas où vous le souhaitez dans un fichier): adb shell dumpsys batterystats> batterystats.txt
développeur Android
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.