Лучшим вариантом является использование OneTimePeriodicWorker
, которое запланирует ваш периодический работник перед возвратом Result.success()
.
Итак, вы ставите WorkRequest для немедленного запуска:
val asSoonAsPossibleWorkRequest = OneTimeWorkRequestBuilder<InitialWorker>
.addTag(TAG_OUTPUT)
.build()
WorkManager.getInstance(context).enqueue(asSoonAsPossibleWorkRequest)
и ваш работник просто ставит в очередь периодического работника перед возвратом Result.success()
:
class InitialWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
// Do Something Useful
// Enqueue the periodic Worker
val dailyWorkRequest = PeriodicWorkRequestBuilder<DailyWorker>(1, TimeUnit.DAYS)
.addTag(TAG_OUTPUT)
.build()
WorkManager.getInstance(applicationContext).enqueue(dailyWorkRequest)
return Result.success()
}
}