Як Android обчислює споживання батареї додатками?


24

Як Android вимірює енергію, яку використовує окремий апаратний компонент? Як Android вимірює енергію, яку використовує кожен окремий процес?


Я здогадуюсь, скільки інструкцій виконується за 1 сек.
AZ_

6
@Algo: Буде абсолютно оманливим вважати, що фонова програма, яка використовує багато процесора, є більш голодною від батареї, ніж інша програма, яка використовує мало процесора, але багато Wifi та GPS та дисплея.
Лі Лі Раян

Якщо так, то ви можете отримати підказку від кількості дозволів, які отримала програма .. просто ідея.
AZ_

@LieRyan в статистиці батареї, чи не wifi, gps, bluetooth тощо, не розраховується як їх власний "споживач" акумулятора?
Райан Конрад

Відповіді:


11

Android відстежує події, які впливають на витрату акумулятора, і зберігає цю інформацію у файлі batterystats.bin. Деякі приклади:

  • тривалість екрана була включена з певним налаштуванням яскравості
  • який додаток (чи не додаток для Android) та як довго тримається блокування неспання (не дозволяє пристрою спати)
  • Використання процесора на процес (додаток Android або інший процес)
  • сила сигналу телефону
  • Використання GPS
  • тощо.

Android обчислює, яку потужність використовує кожен додаток або компонент (наприклад, екран) на основі інформації про конфігурацію, включеної на пристрій виробником.

Не все вимірюється, тому статистика може бути часом оманливою, але вона стає кращою з кожним випуском платформи Android.

Статистика батареї можна скинути з пристрою, використовуючи:

adb shell dumpsys batterystats

Ось цікавий фрагмент допису Діани Хакборн з більш детальною інформацією про споживання електроенергії для блокувальних блоків:

Існує два способи обчислення потужності блокування блоків.

  1. На деяких наборах чіпсетів просто утримуючи функцію блокування не потрібно, щоб процесор перейшов у режим глибокого сну. У повідомленні про використання акумулятора це додаткове споживання електроенергії буде розподілено між усіма програмами, що мають блокування блокування.

  2. Навіть якщо саме блокування блокування не спричиняє енергоспоживання, утримування блокування блокування в одному додатку може дозволити іншим програмам запускатися та процесору, коли б інакше не було. (Наприклад, у деяких додатках може бути функція {sleep (1); зробіть щось;} цикл, який не запустився, якщо не буде встановлено блокування "wake". ті, що тримають фіксатори.


чи можете ви надати джерела / посилання, які підтверджують вашу відповідь?
ввечері

Вся інформація перебуває з наданого посилання на Google + потік розробника Google, знайомого з цією областю.
Paweł Nadolski

1
Правильна команда для нових пристроїв (не впевнений, з якого API) має бути: adb shell dumpsys batterystats або (у випадку, якщо ви хочете всередині файлу): adb shell dumpsys batterystats> batterystats.txt
android developer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.