Открыть сервис

Doze

Doze — это режим энергосбережения в операционной системе Android, впервые представленный в версии Android 6.0 Marshmallow (2015 год). Он предназначен для снижения расхода заряда аккумулятора в периоды, когда устройство не используется активно пользователем, путём ограничения фоновой активности приложений и сетевых операций.

История

Режим Doze был анонсирован компанией Google в мае 2015 года на конференции Google I/O как часть новой версии Android 6.0 Marshmallow. Основной целью разработки стало увеличение времени автономной работы устройств, особенно в режиме ожидания, без необходимости изменения пользовательского поведения. До появления Doze фоновые процессы и синхронизация данных могли существенно разряжать батарею, даже когда экран был выключен.

В Android 7.0 Nougat (2016) механизм был усовершенствован: появился «лёгкий» режим Doze, который активируется при выключенном экране, но без необходимости полной неподвижности устройства. Это позволило экономить энергию даже при кратковременных перерывах в использовании.

Принцип работы

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

Стандартный Doze (Android 6.0+)

  1. Вход в режим: После выключения экрана и отсутствия движения в течение определённого времени (обычно около 30 минут) устройство переходит в фазу Doze.
  2. Окна обслуживания: Система периодически (с увеличивающимися интервалами) выводит устройство из Doze на короткое время (окна обслуживания), чтобы приложения могли выполнить отложенные задачи (синхронизация, проверка обновлений).
  3. Ограничения во время Doze:
  • Доступ к сети (Wi-Fi и мобильные данные) блокируется.
  • Фоновые процессы и синхронизация приостанавливаются.
  • Приложениям запрещается запускать будильники (AlarmManager) в обычном режиме; они откладываются до следующего окна обслуживания.
  • Системные уведомления (кроме приоритетных, например, от будильника или звонка) задерживаются.

Лёгкий Doze (Android 7.0+)

Этот режим активируется сразу после выключения экрана, независимо от движения устройства. Он менее строг, чем полный Doze:

  • Доступ к сети сохраняется, но с ограничениями.
  • Фоновые задачи и синхронизация задерживаются, но не блокируются полностью.
  • Будильники (AlarmManager) работают с задержками.

Лёгкий Doze переходит в полный, если устройство остаётся неподвижным в течение длительного времени.

Классификация и настройки

Режимы работы

Doze не является единым переключателем. Его поведение определяется системой автоматически на основе нескольких факторов:

  • Активный режим: Устройство используется (экран включён, есть движение). Doze неактивен.
  • Лёгкий Doze: Экран выключен, устройство может двигаться (например, в кармане).
  • Полный Doze: Экран выключен, устройство неподвижно.
  • Глубокий Doze: Устройство находится в полном Doze длительное время (часы). Интервалы окон обслуживания максимально увеличены.

Исключения (Whitelist)

Приложения могут быть добавлены в «белый список» (whitelist) — список исключений, для которых ограничения Doze смягчаются. Это необходимо для приложений, работа которых критически важна в фоне (например, мессенджеры, музыкальные плееры, приложения для отслеживания фитнеса). Пользователь может вручную управлять этим списком в настройках системы (Настройки → Батарея → Оптимизация батареи).

Настройки для разработчиков

Разработчики могут тестировать поведение своих приложений в режиме Doze с помощью команд ADB (Android Debug Bridge). Например, команда adb shell dumpsys deviceidle force-idle принудительно переводит устройство в режим Doze.

Влияние на приложения

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

Рекомендации Google

  • Использовать Firebase Cloud Messaging (FCM) для отправки push-уведомлений, а не постоянные фоновые соединения.
  • Планировать задачи с помощью JobScheduler или WorkManager, которые учитывают состояние Doze.
  • Избегать использования AlarmManager для задач, не требующих точного времени выполнения.
  • Не запрашивать исключение из Doze без необходимости.

Примеры проблем

  • Мессенджеры, не использующие FCM, могут задерживать доставку сообщений.
  • Приложения для синхронизации файлов (например, облачные хранилища) могут не обновляться в фоне.
  • Игры, требующие постоянного подключения к серверу, могут разрывать соединение.

Критика и ограничения

Несмотря на эффективность, Doze имеет ряд недостатков:

  • Задержка уведомлений: Даже приоритетные уведомления могут задерживаться на несколько минут, что критично для мессенджеров и систем мониторинга.
  • Сложность для разработчиков: Необходимость адаптации приложений к разным режимам Doze и версиям Android усложняет разработку.
  • Неравномерность работы: На разных устройствах производителей (Samsung, Xiaomi, Huawei) поведение Doze может отличаться из-за дополнительных систем энергосбережения, что приводит к непредсказуемости.
  • Отсутствие полного контроля: Пользователь не может полностью отключить Doze (только для отдельных приложений), что иногда вызывает неудобства.

Сравнение с другими режимами

Doze часто путают с режимом «Энергосбережение» (Battery Saver), который также присутствует в Android. Основные отличия:

  • Doze: Автоматический, прозрачный для пользователя, работает в фоне, не снижает производительность при активном использовании.
  • Энергосбережение: Включается вручную или при низком заряде (например, 15%), снижает яркость экрана, ограничивает производительность процессора и отключает вибрацию.

Интересные факты

  • Название «Doze» (англ. «дремота») выбрано для ассоциации с состоянием полусна, когда устройство потребляет минимум энергии.
  • В Android 9 Pie (2018) механизм Doze был дополнительно улучшен: система начала более агрессивно ограничивать фоновую активность приложений, даже если устройство находится в движении.
  • Некоторые производители (например, Huawei с режимом «Ultra Power Saving») реализуют собственные, более радикальные версии энергосбережения, которые могут конфликтовать с Doze.

Источники

  1. Android Developers Documentation: «Optimize for Doze and App Standby».
  2. Google I/O 2015: «Android M: Doze and App Standby».
  3. Android 7.0 Nougat Release Notes.
  4. Статья «Android Doze: What It Is and How It Works» на сайте Android Authority.
  5. Документация по Android 9 Pie: «Background Execution Limits».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →