¿Cómo calcula Android el consumo de batería por aplicaciones?

24

¿Cómo mide Android la energía utilizada por un componente de hardware individual? ¿Cómo mide Android la energía utilizada por cada proceso individual?

diimdeep
fuente
Supongo cuántas instrucciones se realizan en 1 segundo.
AZ_
66
@Algo: Será totalmente engañoso suponer que una aplicación en segundo plano que usa mucha CPU necesita más batería que otra aplicación que usa poca CPU pero mucha Wifi y GPS y pantalla.
Mentira Ryan
Si es así, puede obtener una pista de la cantidad de permisos que adquirió una aplicación ... solo una idea.
AZ_
@LieRyan en las estadísticas de la batería, ¿no se calcula wifi, gps, bluetooth, etc. como su propio "consumidor" de la batería?
Ryan Conrad

Respuestas:

11

Android rastrea eventos que afectan el uso de la batería y almacena esta información en el archivo batterystats.bin. Algunos ejemplos:

  • la pantalla de duración de tiempo estuvo encendida con una configuración de brillo específica
  • qué aplicación (o proceso de aplicación que no es de Android) y cuánto tiempo se mantuvo un bloqueo de activación (evita que el dispositivo duerma)
  • Uso de CPU por proceso (aplicación de Android u otro proceso)
  • intensidad de la señal del teléfono
  • Uso de GPS
  • etc.

Android calcula cuánta energía usa cada aplicación o componente (por ejemplo, pantalla) en función de la información de configuración incluida en el dispositivo por el fabricante.

No todo se mide, por lo que las estadísticas a veces pueden ser engañosas, pero mejora con cada lanzamiento de la Plataforma Android.

Las estadísticas de la batería se pueden descargar del dispositivo usando:

adb shell dumpsys batterystats

Aquí hay un fragmento interesante de una publicación de Diane Hackborn con más detalles sobre el consumo de energía de las cerraduras de despertador:

Hay dos formas de calcular el poder de las cerraduras de activación.

  1. En algunos conjuntos de chips, simplemente mantener un bloqueo de activación debe evitar que la CPU se duerma completamente. En el uso de batería informado, este uso de energía adicional se distribuirá entre todas las aplicaciones que tengan bloqueos de activación.

  2. Incluso si el bloqueo de activación en sí no causa el uso de energía, mantener un bloqueo de activación en una aplicación puede permitir que se ejecuten otras aplicaciones y CPU cuando no lo harían de otra manera. (Por ejemplo, algunas aplicaciones pueden tener un bucle {sleep (1); hacer algo;} que no se ejecutaría si no se mantienen bloqueos de activación). Para solucionar esto, la mitad del uso de CPU de las aplicaciones se distribuye para ser culpado los que tienen cerraduras de estela.

Paweł Nadolski
fuente
¿Puede proporcionar fuentes / referencias que prueben su respuesta?
Diimdeep
Toda la información proviene del enlace proporcionado a google + thread por el desarrollador de Google familiarizado con esta área.
Paweł Nadolski
1
El comando correcto para dispositivos nuevos (no estoy seguro de qué API) debería ser: adb shell dumpsys batterystats, o (en caso de que lo desee dentro de un archivo): adb shell dumpsys batterystats> batterystats.txt
desarrollador de Android