WorkManager — зачем нужен и как используется?

Ответ: WorkManager — это API для выполнения фоновых задач, которые:

  • Сохраняются в БД (Room), и перезапускаются системой
  • должны быть выполнены гарантированно, даже если: приложение закрыто, процесс убит, устройство перезагружено
  • Могут быть отложены, запущены по условиям (Wi-Fi, зарядка и т.п.)
  • Могут быть повторяющимися (periodic)

Когда использовать WorkManager?

СценарийИспользовать WorkManager?
Синхронизация данных в фоновом режимеДа
Отправка логов / статистики ночьюДа
Загрузка медиафайлов только по Wi-FiДа
One-time задача при следующем запускеДа
Точное выполнение в конкретное времяЛучше AlarmManager
Реальное время (медиа, шагомер и т.п.)ForegroundService

Как работает под капотом?

  1. WorkManager использует:
    • JobScheduler (на API 23+)
    • AlarmManager + BroadcastReceiver (на более старых)
    • FirebaseJobDispatcher (опционально в старых версиях)
  2. Все задания сохраняются в БД (обычно Room), чтобы пережить:
    • перезапуск приложения
    • перезагрузку устройства
    • завершение процесса
  3. В doWork() нельзя использовать UI, но можно запускать API, сохранять в БД, и т.д.

Опубликовано

в

от

Метки: