Android · 2 / 5

Service или WorkManager?

Выбор владельца работы, повторные запуски и ограничения Android

Компонент и поток — разные вещи

Service — компонент без собственного UI. По умолчанию callbacks выполняются в главном потоке процесса приложения: тяжёлую работу нужно переносить явно. Foreground service повышает заметность работы для пользователя и требует уведомления, но не ускоряет вычисления и не делает процесс бессмертным. Android: Service.

Выбирайте по гарантии задачи

Сценарий Отправная точка
Загрузка данных только для открытого экрана Корутина в scope владельца экрана
Отложенная синхронизация, важная после ухода из приложения WorkManager
Длительная заметная пользователю работа, соответствующая типу FGS Foreground service с учётом ограничений

WorkManager сохраняет запланированную работу и учитывает ограничения, но не обещает точный момент старта. Возможны остановки и повторные попытки. Уникальная работа помогает управлять дубликатами планирования; это не гарантия «ровно один» внешнего побочного эффекта. WorkManager.

Повтор платежа — архитектурная ошибка

Если сервер принял операцию, а ответ потерян, retry может повторить побочный эффект. Договоритесь о стабильном ID операции и идемпотентности сервера; при повторе используйте тот же ID. Это вывод из сценария отказа, а не обещание WorkManager.

Уточняйте платформенные условия

Для приложений с target API 31+ Android 12+ ограничивает запуск foreground service из фона, с документированными исключениями. Для target API 34+ действуют требования к типам и разрешениям FGS. Проверяйте конкретный тип работы, версию ОС и target SDK. Ограничения FGS, типы FGS.

Основа отбора: draft/android.md, draft/faq500.md, draft/M++.md.

К вопросам →