На что же уходит батарея?

На что же уходит батарея?Главные потребители батареи это:

  • работа CPU;
  • подсветка экрана;
  • работа GPU;
  • работа с сетью;
  • частые получения GPS-координат.

Думаю, этот список знаком многим Android-разработчикам. Самое интересное, каков вклад каждого из этих пунктов. Конечно, он может быть разный. И вот мои наблюдения.

  • CPU часто главный потребитель;
  • на подсветку экрана часто уходит не меньше, чем CPU;

Очень важно не менять яркость подсветки во время сравнительных тестов. Иначе это может исказить результат. Например, когда я замерял, как влияет изменение яркости на потребление батареи на Nexus 5, который прослужил более года, то получил такой результат: изменение яркости экрана с 20% до 80% увеличило потребление батареи на 15% в час.

  • потребление на работу сети может существенно возрасти, если телефон движется и если плохой сотовый сигнал; Это связано с затратами на поиск сотовых точек. Как и в случае с яркостью экрана, надо учитывать, что это может повлиять на результаты тестов.
  • эффект от потребления на получение GPS-координат часто усиливается тем, что при обновлении координаты вызывается callback, в котором исполняется определенный объем кода.
  • На что же мы можем повлиять, чтоб уменьшить потребление батареи приложением? На самом деле, не на многое.

    • Прежде всего это уменьшение нагрузки на CPU. Это главный способ уменьшить расход батареи. Имеет смысл спрофилировать приложение на использование CPU. Если возможно, перенести часть нагрузки на GPU. Это может дать существенный вклад.
    • Затем сеть. Данные имеет смысл буферизировать, чтоб реже обращаться по сети. Здесь подробно описано, как уменьшить потребление батареи при передачи данных по сети.
    • Далее GPS. Если не требуется точная, часто обновляемая координата не запрашивайте её. Стоит рассмотреть возможность определения координаты по WiFi. Здесь хорошо написано про это.

    Профилирование потребления батареи

    Нам понадобится:

    • Android-устройство с OS 5.x и достаточно новым аккумулятором. Если это возможно, ему лучше сделать factory reset.
    • Профилировщик: github. com/google/battery-historian. Его нужно установить на десктоп и опробовать до тестов.

    Каждый эксперимент состоит из следующих шагов:

    1. Полностью заряжаем батарею. Это важно, чтобы потом была возможность сравнивать результаты экспериментов между собой на одной и той же части шкалы батареи.
    2. Устанавливаем на устройство тестируемое приложение.
    3. Перезагружаем устройство. Это нужно, т. к. иначе другие приложения, запущенные в фоне, могут повлиять на результат.
    4. Сбрасываем статистику батареи: adb shell dumpsys batterystats —reset
    5. Можно также включить статистику по wakelock. По умолчанию она выключена: adb shell dumpsys batterystats —enable full-wake-history
    6. Не забываем отключить девайс от компьютера, чтобы не заряжался.
    7. Затем, запускаем тестируемое приложение.
    8. И откладываем устройство на несколько часов, так чтобы оно разрядилось как минимум на 10-15%. Во время теста желательно не трогать устройство и не включать ему экран, поскольку это может повлиять на результат.
    9. Изучаем данные за время теста.

    На последнем шаге остановлюсь подробно. Изучать данные теста можно двумя способами. Можно при помощи профилировщика, разработанного Google. А можно при помощи UI в настройках Android.

    1. Профилировщик battery-historian

    Прежде всего, профилировщик показывает разные UI для Android 5.x и для более ранних версий ОС. Притом, количество, полнота данных и удобство отображения заметно отличаются в пользу Android 5. С другой стороны, результаты профилирования приложения на батарею могут заметно отличаться, если запускать его на разных версиях Android. Я рекомендую начинать профилирование с Android 5, а затем обязательно повторить процесс на более ранних версиях ОС.

    2. UI в настройках Android

    Тут все просто. На телефоне заходим в Настройки -> Батарея. Проценты означают, сколько процентов батареи потрачено на каждое приложение. За 100% принимается все, что было потрачено за время теста.

    Например, экран выше показывает, что статистика собрана примерно с 22 вечера до 7:30 утра. За это время устройство разрядилось на 72% (100% — 28%). 14% от того, на что разрядилось (т. е. от 72%) ушло на экран. 12% на MAPS. ME. Если клинуть на пункт в этом списке, то можно получить детальную информацию о расходе для выбранного приложения. На этом экране также видно, что потребление резко возросло с 6 до 7 часов. Нередко бывает, что приложение активно использует Службы Google, и расход заряда списывается на них. Это также видно на скриншоте выше. Этот диалог позволяет быстро понять, что происходит с приложением на фоне остальных приложений и сервисов, запущенных системой. А в случае Android 4.x и более ранних он дает данные, которые не получить при помощи профилировщика.

    Работа с профилировщиком battery-historian

    Для начала профилировщик необходимо установить. Подробно процесс установки описан здесь. Он включает в себя:

    Если вы установите go, как предложено по умолчанию, в директорию $HOME/go, то достаточно задать следующие переменные окружения, после установки:

    export GOPATH=$HOME/go

    export GOBIN=$GOPATH/bin

  • установку protobuf;
  • установку профилировщика battery-historian.
  • Далее подключаем устройство и забираем информацию о расходе батареи с момента последнего сброса данных о заряде (он происходит, если батарея зарядилась полностью или если была вызвана команда: adb shell dumpsys batterystats —reset):

    Запускаем профилировщик:

    Заходим в браузере по адресу:

    В открывшемся окне выбираем ранее сохраненный файл bugreport. txt.

    Результаты, которые вы увидите в браузере, будут зависеть от версии Android, с которой был загружен bugreport. txt. Для Android 5.x отображается страница с рядом вкладок и самой разнообразной информацией, включая статистику по каждому приложению системы. Общая статистика расхода батареи на устройстве:

    Статистика по приложениям:

    Для Android 4.x получим вот такой диалог. Он существенно менее информативен, но по нему можно понять, что происходит с потреблением в целом.

    Режимы профилирования приложения

    Имеет смысл провести проверку как минимум в двух режимах:

    • приложение на переднем плане;
    • приложение в фоне.

    Желательно, чтобы приложение в фоне вообще не потребляло ресурсов, если на то нет очень веских причин. Кроме того, часто стоит отдельно проверить, как приложение потребляет батарею во время движения. Особенно, если оно использует GPS или как-то иначе связано с локацией.

    кодовое слово май шоп сентябрь 2017

    кодовое слово май шоп сентябрь 2017

    отличия андроид 6 от 7

    This entry was posted in Android какое приложение использует gps and tagged , . Bookmark the <a href="https://i4net.ru/na-chto-zhe-uxodit-batareya/" title="Permalink to На что же уходит батарея?" rel="bookmark">permalink</a>.

    Comments are closed.