Режим энергосбережения Doze — одно из ключевых новшеств Android 6.0. Это не просто очередная оптимизация, это кардинальное решение, позволяющее, по словам Google, существенно продлить жизнь устройства от батареи. Но так ли эффективен этот механизм на самом деле? Попробуем выяснить, а заодно разберемся, как он работает и можно ли его настроить под себя и активировать на старых версиях Android.

 

В чем проблема?

Когда Google заявляет, что после обновления до Android 6.0 жизнь Nexus 7 продлевается на пять часов, верится с трудом. Уж слишком фантастическая цифра. Однако если разобраться в том, как работает Doze, то все встанет на свои места. Дело в том, что Doze — это не какая-то навороченная технология, а довольно простой механизм, который всего лишь ликвидирует одну из проблем Android, заложенную еще на этапе проектирования операционной системы.

В отличие от со всех сторон обрезанной iOS, Android всегда был операционкой, гораздо более близкой по духу к настольным операционным системам, и одной из его особенностей всегда была полноценная многозадачность. Другими словами, приложения никогда не ограничивались в том, что они делают, пока находятся, так сказать, в свернутом состоянии. Ты мог спокойно запустить обновление списка писем в почтовом приложении, свернуть его и продолжать читать твиттер. Почтовый клиент благополучно загрузит цепочки писем в фоновом режиме и выведет в статусную строку уведомление. Более того, можно не просто свернуть приложение, а вообще выключить экран, и оно все равно сделает свою работу.

С одной стороны, это полезная особенность Android, которая позволяет работать со смартфоном гораздо более эффективно (и это, кстати, очень заметно при переходе с Android на iOS). С другой стороны, очень скоро после появления Android стали заметны серьезные проблемы такого подхода. Многие приложения им просто злоупотребляли, причем вовсе не из-за злого умысла разработчика, а по причине дилетантизма и неумения грамотно писать код. В результате заряд батареи расходовался чересчур быстро.

Долгое время проблему пыталась побороть как сама Google, так и независимые разработчики. В первом случае результатом работы стали разные ухищрения, такие, например, как автоматическое отслеживание работы фоновых сервисов приложений и их убийство при слишком долгой активной работе или слишком высокой нагрузке на процессор (Android 4.4). Во втором случае появились приложения Wakelock Detector и Greenify. Одно показывало, какие приложения не дают процессору уснуть, другое позволяло «заморозить» эти приложения, чтобы они вообще не могли работать в фоне. Для многих любителей ставить на смартфоны сотни приложений эти два инструмента стали спасением.

Wakelock Detector: список жадных до процессора приложений
Wakelock Detector: список жадных до процессора приложений

Однако, кроме root на смартфоне, Wakelock Detector и Greenify требовали также понимать, что ты делаешь, тратить время на поиск жадных до процессора приложений, да и вообще все это грязные хаки. С помощью Doze Google как раз и попыталась избавиться от этих проблем, реализовав полностью автоматический механизм заморозки приложений.

Greenify: выбираем приложения для заморозки
Greenify: выбираем приложения для заморозки
 

Как это работает?

Doze — это системный сервис, который активируется после отключения экрана и следит за тем, не взял ли ты смартфон в руки (с помощью датчиков положения) или не подключил ли к зарядке. Тогда же начинается отсчет времени; если по окончании этого периода указанных действий со смартфоном не происходит, Doze переводит его в режим агрессивного энергосбережения (на самом деле все сложнее, но об этом позже), который предполагает:

  • запрет любых сетевых операций;
  • полное игнорирование вейклоков (wake locks), того самого механизма, который позволяет приложениям безнаказанно работать, даже если экран выключен;
  • отложенное выполнение алармов (alarms), которые позволяют приложениям получать управление в указанное время;
  • отключение сканирования Wi-Fi;
  • отключение синхронизаций, как с Google, так и с другими облачными сервисами, добавленными в раздел «Аккаунты» в настройках;
  • отключение JobScheduler, подсистемы, позволяющей приложениям получать управление при определенных условиях (при подключении к Wi-Fi, например).

Говоря простыми словами, Doze запрещает приложениям делать что-либо, если смартфон долгое время не используется. Но есть несколько исключений. Первое: через определенные периоды система на короткое время выходит из режима Doze, позволяя приложениям выполнить отложенные действия (те же алармы). Причем чем дольше смартфон остается нетронутым, тем реже будет происходить выход из Doze. Второе: система учитывает потребности таких приложений, как будильники, и выходит из режима Doze незадолго до того, как они должны сработать (такие приложения должны использовать метод setAalarmClock() класса AlarmManager). Третье: приложения, получающие push-уведомления с помощью Google Cloud Messaging (GCM), смогут выводить смартфон из режима Doze, но только в том случае, если это высокоприоритетное уведомление. Четвертое: звонки и СМС сразу выводят смартфон из режима Doze.

Временная шкала работы Doze
Временная шкала работы Doze

Вместе с Doze в Android 6.0 также появилась родственная ему функция App Standby. По сути, это все тот же механизм, но работающий в отношении отдельно взятых приложений, а не всей системы в целом и не зависящий от того, выключен экран или нет. Работает он так: система непрерывно следит за тем, какие ранее запущенные приложения ты используешь, и, если ты долго не возвращался к какому-то из них, переводит его в режим Standby. В таком режиме приложение имеет все те же ограничения, что и в режиме Doze, и точно так же время от времени получает управление на короткие периоды.

 

Можно ли отключить Doze?

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Безопасность превыше всего. 9 простых трюков, которые сделают жизнь линуксоида секьюрнее

Жизнь обычных людей складывается из мелочей. Жизнь линуксоида складывается из множества ма…