В интернете можно найти много разной информации о том, как продлить жизнь смартфона от батареи. Диапазон советов простирается от вполне обоснованных, вроде отключения разных видов синхронизации, до совсем абсурдных вроде применения приложений Ultimate Battery Saver и “калибровки батареи”. Основная проблема здесь заключается в том, что эти советы либо не работают вовсе, либо заставляют отказаться от какой-либо функциональности. В этой статье я хотел бы рассказать о единственном верном способе сберечь батарею, но при этом не терять функционал.

О чем речь?

Являясь операционной системой, изначально разработанной для мобильных устройств, Android умеет виртуозно обходится с ресурсами гаджета, в каждый момент стараясь перевести процессор и другие железные компоненты смартфона в энергосберегающий режим. Здесь задействуется и механизм снижения частоты процессора, и разные энергосберегающие режимы для модулей WiFi и GSM, и такие продвинутые техники как batch-опрос состояния сенсоров, а начиная с Android 6.0 механизм Doze, включающий режим глубокого сна пока ты им не пользуешься.

При отключении экрана Android переводит устройство в состояние suspend, аналогичное ACPI S3 в ПК, то есть отключает или переводит в энергосберегающий режим все модули и снимает напряжение с процессора. В благоприятной ситуации в таком состоянии смартфон может прожить множество дней без подключения к заряднику, однако он же накладывает на систему определенные ограничения. Что, например, будет если во время сна придет письмо или наступит время звонка будильника? И как проигрывать музыку в спящем режиме?

Чтобы решить эту проблему в Android была внесена идея wakelock. Это механизм, который позволяет приложениям заставить процессор не засыпать когда он им нужен. Например, тогда, когда после отключения экрана должна продолжать играть музыка или закачка приложения из Google Play. Идея wakelock также используется в механизме AlarmManager, который позволяет приложениям будить смартфон в определенные моменты чтобы выполнить ту или иную работу (обновить сводку погоды, например). Тот же wakelock используется и самой системой чтобы позволить приложениям получать push-уведомления и многих других функций.

Проблема здесь в том, что многие приложения злоупотребляют описанными механизмами и слишком часто будят смартфон. На устройстве с сотней приложений постоянное пробуждение с помощью wakelock’ов может привести к гораздо большему расходу энергии нежели WiFi и GPS вместе взятые.

Что можно сделать?

К счастью для нас wakelock является именной конструкцией, привязанной к приложению, поэтому выяснить кто и по каким причинам поставил wakelock не так уж и трудно. Сделать это можно, например, с помощью консольной команды dumpsys, однако это несколько извращенный способ и лучше воспользоваться удобным графическим приложением Wakelock Detector, которое выводит информацию об использовании wakelock’ов в удобном виде с привязкой к приложениям.

Wakelock Detector

Интерфейс приложения весьма прост и его можно увидеть на скриншотах выше. На первом скриншоте можно увидеть интерфейс приложения сразу после запуска. Первая строка показывает количество времени бодрствования смартфона относительно общего времени его работы. Все остальные строки это приложения, отсортированные по общему времени установки ими wakelock’ов.

Тапнув по одному из приложений (второй и третий скриншоты) можно увидеть информацию о том, какие wakelock’и, как долго и как часто устанавливало приложение. Имена для wakelock’ов автор приложения может выдумывать произвольные поэтому зачем конкретно они были поставлены придется выяснять самим. В большинстве случаев сделать это не трудно, например, на втором скриншоте видно, что Dropsync устанавливал wakelock под названием DropsyncWakeLock 15 раз, что привело к более чем получасу бодрствования смартфона. Мы не знаем зачем конкретно Dropsync ставил этот wakelock, но не трудно догадаться, что во время его установки производилась автоматическая синхронизация смартфона с Dropbox. Отключив авто-синхронизацию в настройках Dropsync мы позволим смартфону спать на полчаса дольше, чем сохраним несколько процентов батареи.

Иногда имена wakelock’ов говорят сами за себя. На третьем скриншоте показаны wakelock’и приложения gmail, самый “прожорливый” из которых имеет имя sync/gmail-ls/… Не трудно догадаться, что он устанавливается во время синхронизации почты и от жора можно избавиться просто отключив синхронизацию в настройках Android.

Пройдя по всем приложениям из списка можно найти и множество разных причин пробуждения устройства, устранив которые удастся существенно продлить жизнь смартфона от батареи.

Заморозка с помощью Greenify

Не все приложения позволяют отключить автоматическую синхронизацию и пробуждение, что лишает нас возможности устранить причину слишком частых пробуждений, однако мы можем воспользоваться инструментом Greenify, который принудительно усыпляет выбранные приложения не позволяя им будить смартфон.

Пользоваться им очень просто, запускаем, нажимаем кнопку “+” и в открывшемся окне выбираем те приложения, которые слишком часто будят девайс. Отмечу только, что не стоит пихать в Grrenify все приложения подряд, так как это может иметь обратный эффект - жор усилиться.

Заключение

Вот и все. Можете наслаждаться своим долгоиграющим смартфоном. В следующий раз я расскажу как продлить жизнь от аккумулятора с помощью андервольтинга.