Ответ
WorkManager поддерживает несколько типов работы (WorkRequest):
- OneTimeWorkRequest - однократное выполнение задачи. Пример:
val uploadWork = OneTimeWorkRequestBuilder<UploadWorker>().build()
WorkManager.getInstance(context).enqueue(uploadWork)
- PeriodicWorkRequest - периодическое выполнение с интервалом (минимум 15 минут). Пример:
val syncWork = PeriodicWorkRequestBuilder<SyncWorker>(
1, TimeUnit.HOURS // минимальный интервал - 15 минут
).build()
- Chained work - цепочка последовательных задач с помощью
beginWith()/then():
WorkManager.getInstance(context)
.beginWith(workA)
.then(workB)
.enqueue()
- Parallel work - параллельное выполнение через
WorkContinuation.combine()
WorkManager автоматически выбирает оптимальный способ выполнения (JobScheduler, AlarmManager или BroadcastReceiver) в зависимости от версии Android.