In che modo Android calcola il consumo della batteria per app?


24

In che modo Android misura l'energia utilizzata dai singoli componenti hardware? In che modo Android misura l'energia utilizzata da ogni singolo processo?


Immagino quante istruzioni vengono eseguite in 1 secondo.
AZ_1

6
@Algo: sarà totalmente fuorviante ipotizzare che un'applicazione in background che utilizza molta CPU sia più affamata di batteria rispetto a un'altra applicazione che utilizza poca CPU ma un sacco di Wifi e GPS e display.
Lie Ryan

In tal caso, puoi ottenere un suggerimento dal numero di autorizzazioni acquisite da un'applicazione ... solo un'idea.
AZ_

@LieRyan nelle statistiche della batteria, wifi, gps, bluetooth, ecc., Non viene calcolato come il proprio "consumatore" della batteria?
Ryan Conrad

Risposte:


11

Android tiene traccia degli eventi che influiscono sull'utilizzo della batteria e memorizza queste informazioni nel file batterystats.bin. Qualche esempio:

  • periodo di tempo in cui lo schermo era attivo con un'impostazione specifica per la luminosità
  • quale applicazione (o processo dell'app non Android) e per quanto tempo è stato bloccato un blocco (impedisce al dispositivo di dormire)
  • Utilizzo della CPU per processo (app Android o altro processo)
  • intensità del segnale del telefono
  • Utilizzo del GPS
  • eccetera.

Android calcola la potenza che ogni Applicazione o componente (ad esempio schermo) utilizza in base alle informazioni di configurazione incluse nel dispositivo dal produttore.

Non tutto viene misurato, quindi le statistiche possono talvolta essere fuorvianti, ma migliora con ogni versione della piattaforma Android.

Le statistiche della batteria possono essere scaricate dal dispositivo usando:

adb shell dumpsys batterystats

Ecco un frammento interessante di un post di Diane Hackborn con maggiori dettagli sul consumo energetico delle scia:

Esistono due modi in cui viene calcolata l'alimentazione dai blocchi di riattivazione.

  1. Su alcuni chipset, è sufficiente tenere premuto un blocco di scia per evitare che la CPU vada in modalità di sospensione completa. Nell'utilizzo della batteria segnalato, questo consumo di energia extra verrà distribuito su tutte le app che dispongono di blocchi di riattivazione.

  2. Anche se il blocco della sveglia stesso non causa consumo di energia, tenere un blocco della sveglia in un'app può consentire l'esecuzione di altre applicazioni e CPU quando non altrimenti. (Ad esempio, alcune app potrebbero avere un ciclo {sleep (1); fare qualcosa;} che non verrebbe eseguito se non si tengono blocchi di riattivazione.) Per risolvere questo problema, metà dell'utilizzo della CPU delle applicazioni viene distribuito per essere biasimato quelli che tengono i blocchi di scia.


puoi fornire fonti / riferimenti a dimostrazione della tua risposta?
Diimdeep,

Tutte le informazioni provengono dal link fornito a google + thread dallo sviluppatore Google che ha familiarità con questa area.
Paweł Nadolski,

1
Il comando corretto per i nuovi dispositivi (non sono sicuro da quale API) dovrebbe essere: adb shell dumpsys batterystats o (nel caso lo desideri all'interno di un file): adb shell dumpsys batterystats> batterystats.txt
sviluppatore Android
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.