Android Doze Mode
t.me/qa_chillout
Android Doze Mode — это режим, в который Android переходит, когда телефон долго лежит без движения. В нём система старается экономить заряд и поэтому сильно ограничивает работу приложений в фоне.
Пользователь не может сам включить Doze Mode — его включает сама система, когда выполняются условия:
- телефон лежит без движения;
- экран долго выключен;
- устройство не на зарядке;
- нет активного использования.
Однако пользователь может косвенно повлиять на Doze Mode, например:
- разблокировать телефон → Doze Mode отключится,
- подключить зарядку → Doze Mode отключится,
- выключить оптимизацию батареи для конкретного приложения → Doze Mode будет действовать мягче.
Но кнопки «Включить Doze Mode» не существует — режим полностью автоматический.
Что происходит в Doze Mode
Когда устройство лежит неподвижно с выключенным экраном, Android постепенно переводит его в «глубокий сон». В этом режиме:
Ограничивается:
- выполнение фоновых задач и сервисов,
- сетевые операции,
- доступ к Wi-Fi и мобильному интернету (почти полностью),
- синхронизация данных,
- отложенные операции JobScheduler / WorkManager (в Android есть специальные механизмы, которые позволяют приложению выполнять задачи позже, когда система решит, что это удобно и безопасно для батареи),
- приём обычных пуш-уведомлений (FCM не доставляются сразу).
Разрешается только:
- высокоприоритетные FCM-пуши,
- звонки,
- SMS,
- будильники.
Зачем тестировщику знать про Doze Mode
Для QA, работающих с мобильными приложениями, понимание принципов Doze Mode имеет важное значение, поскольку этот механизм напрямую влияет на стабильность, своевременность выполнения задач и корректность функционирования приложений в условиях ограниченных системных ресурсов.
Doze Mode определяет, как и когда приложение может выполнять фоновые операции. Ограничение сетевой активности, задержка отложенных задач и невозможность немедленного выполнения фоновых сервисов приводят к тому, что привычная логика приложения вне Doze Mode может радикально отличаться от поведения в условиях энергосбережения. Для тестировщика важно оценить, корректно ли приложение реагирует на такие системные ограничения, не приводит ли Doze Mode к зависаниям, пропуску задач или нарушению последовательности пользовательских сценариев.
Doze Mode существенно влияет на доставку push-уведомлений, которые являются критически важным каналом коммуникации для банковских приложений, приложений доставки, медицинских сервисов, систем мониторинга и любых продуктов, предполагающих оперативное взаимодействие с пользователем. В Doze Mode обычные FCM-уведомления задерживаются до выхода устройства из режима энергосбережения. При тестировании важно убедиться, что приложение корректно использует приоритеты уведомлений, правильно обрабатывает их после пробуждения устройства и не теряет состояние задач при переходе между режимами.
Кроме того, Doze Mode влияет на механизмы пробуждения процессора и работу wake locks. Если приложение удерживает процессор активным дольше, чем нужно, система может принудительно ограничить его работу, что иногда приводит к неожиданным сбоям или остановке фоновых задач. Тестировщику важно понимать, какие части логики приложения требуют гарантированного выполнения, и проверять, не нарушает ли Doze Mode критические участки функциональности.
Краткий чек-лист тестирования Doze Mode
Подготовка
- Убедиться, что устройство не подключено к зарядке.
- Выключить экран и дождаться перехода в Doze Mode (или форсировать через adb).
- Проверить, что приложение находится в фоне.
Пуш-уведомления
- Обычные FCM-пуши приходят с задержкой или только после выхода из Doze Mode.
- High Priority уведомления доставляются сразу.
- Приложение корректно обрабатывает уведомления после пробуждения.
Фоновые задачи
- Периодические задачи (WorkManager/JobScheduler) откладываются.
- Задачи выполняются только во время «окна активности».
- Приложение корректно восстанавливает работу после выхода из Doze Mode.
Сетевая активность
- Запросы в фоне не выполняются в Doze Mode.
- Поведение приложения корректно при отсутствии сети в фоновом режиме.
- После выхода из Doze Mode запросы возобновляются без ошибок.
UX и жизненный цикл
- После пробуждения приложение корректно восстанавливает состояние.
- Нет крашей при длительном нахождении в фоне.
- Геолокация, Bluetooth, сенсоры корректно реагируют на ограничения Doze.
Выход из Doze Mode
- Приложение корректно реагирует на разблокировку устройства.
- Данные обновляются после выхода из Doze без зависаний.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».