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+)
- Вход в режим: После выключения экрана и отсутствия движения в течение определённого времени (обычно около 30 минут) устройство переходит в фазу Doze.
- Окна обслуживания: Система периодически (с увеличивающимися интервалами) выводит устройство из Doze на короткое время (окна обслуживания), чтобы приложения могли выполнить отложенные задачи (синхронизация, проверка обновлений).
- Ограничения во время 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.
Источники
- Android Developers Documentation: «Optimize for Doze and App Standby».
- Google I/O 2015: «Android M: Doze and App Standby».
- Android 7.0 Nougat Release Notes.
- Статья «Android Doze: What It Is and How It Works» на сайте Android Authority.
- Документация по Android 9 Pie: «Background Execution Limits».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →