Выполнить работу непосредственно перед выполнением периодического задания - WorkManager - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу запустить периодическое задание, как только процесс завершится, а затем запустить периодическое ежедневное задание. Я знаю, как запустить периодическое задание, но мой вопрос заключается в том, что мне нужно запускать это периодическое задание немедленно ровно один раз, а после этого регулярное периодическое задание должно выполняться ежедневно. В настоящее время мне нужно подождать 1 день, чтобы выполнить периодическое задание. Как я могу это сделать?

1 Ответ

2 голосов
/ 29 апреля 2019

Лучшим вариантом является использование 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()
   }
}
...