Автозапуск в фоновом режиме на Android¶
Автозапуск в фоновом режиме на Android — это механизм операционной системы Android, при котором приложение самостоятельно запускается без прямого действия пользователя, например при включении устройства, получении системного события или по расписанию. Система ограничивает фоновую активность приложений, чтобы снизить расход батареи и памяти, поэтому разработчикам приходится использовать специальные разрешения и сервисы для легального фонового запуска.
¶Ограничения фоновой работы в Android
Начиная с Android 6.0 (Marshmallow) система ввела режим Doze, а с Android 7.0 — режим App Standby, которые приостанавливают фоновую активность приложений, когда устройство не используется. С Android 9.0 (Pie) добавлены ограничения фонового запуска (background restrictions): приложение, недавно открытое пользователем, может работать в фоне, а «спящее» приложение — нет. С Android 10 действует ещё более строгое ограничение на запуск фоновых сервисов (background service restrictions), а с Android 12 — запрет на запуск foreground-сервисов из фонового состояния без отдельного разрешения.
Эти меры приводят к тому, что приложение, не запущенное пользователем, часто не может получить доступ к сети, будильнику, геолокации или уведомлениям.
¶Основные способы фонового запуска
¶Системные события
Android предоставляет BroadcastReceiver — компонент, который реагирует на системные события: включение устройства, подключение к зарядке, изменение подключения к сети, получение SMS. Пример — приложение, запускающее синхронизацию при подключении к Wi-Fi.
¶AlarmManager и WorkManager
AlarmManager позволяет планировать выполнение задач по расписанию, но начиная с Android 6.0 точность будильников снижена в режиме Doze. WorkManager — рекомендованный Google API для отложенных и повторяющихся задач: он учитывает ограничения системы и выполняет работу, когда условия позволяют (например, при подключении к зарядке).
¶Foreground-сервисы
Foreground-сервис (foreground service) — это сервис с постоянным уведомлением в статус-баре, который система не убивает в фоне. Примеры: навигатор, музыкальный плеер, трекер тренировок. С Android 12 для запуска foreground-сервиса из фонового состояния требуется отдельное разрешение FOREGROUND_SERVICE_*.
¶BootReceiver
Приложение может зарегистрировать BroadcastReceiver на действие BOOT_COMPLETED, чтобы запуститься после перезагрузки устройства. Для этого требуется разрешение RECEIVE_BOOT_COMPLETED. Начиная с Android 8.0 фоновые сервисы, запущенные этим способом, получают лишь ограниченное время работы.
¶Что означает «автозапуск» в настройках Android
В интерфейсе ряда прошивок (MIUI, EMUI, ColorOS, One UI) в настройках безопасности или батареи присутствует пункт «Автозапуск» или «Автозапуск приложений». Он определяет, может ли приложение запускаться в фоне без прямого действия пользователя. По умолчанию в большинстве прошивок автозапуск отключён для сторонних приложений, чтобы сократить расход батареи и уведомлений.
Если автозапуск отключён, приложение не сможет:
- отправлять push-уведомления;
- синхронизировать данные по расписанию;
- работать в фоне (например, музыкальный плеер может останавливаться при блокировке экрана);
- запускаться после перезагрузки.
Для мессенджеров, почтовых клиентов, навигаторов и музыкальных плееров автозапуск обычно необходимо включить вручную в настройках системы.
¶Как включить автозапуск
Путь зависит от производителя прошивки:
| Прошивка | Путь настроек |
|---|---|
| MIUI (Xiaomi) | Настройки → Приложения → Управление → Автозапуск |
| EMUI (Huawei) | Настройки → Батарея → Запуск приложений в фоне |
| One UI (Samsung) | Настройки → Батарея → Фоновые ограничения → Не ограничивать |
| ColorOS (OPPO) | Настройки → Батарея → Приложения в фоне |
| Stock Android | Настройки → Приложения → [приложение] → Батарея → Без ограничений |
Дополнительно в разделе «Батарея» → «Оптимизация батареи» или «Ограничения батареи» можно выбрать режим «Без ограничений» для конкретного приложения.
¶Ограничения и энергопотребление
Включение автозапуска для большого числа приложений увеличивает расход батареи: каждое фоновое приложение может периодически просыпаться, обращаться к сети и использовать процессор. Система Android предоставляет раздел «Батарея» → «Использование батареи», где показано, какие приложения потребляют энергию в фоне. Производители прошивок добавляют собственные «оптимизаторы», которые могут убивать фоновые процессы даже при формально включённом автозапуске.
¶Источники
- Документация Android Developers: Background execution limits
- Документация Android Developers: WorkManager
- Руководства пользователей Xiaomi MIUI, Huawei EMUI, Samsung One UI
- Статьи портала 4PDA о фоновой работе приложений на Android
