运行 在运行周期性任务之前立即工作 - WorkManager

Run Work immediately before runnin periodic task - WorkManager

我想在进程结束后立即 运行 执行周期性任务,然后 运行 执行周期性日常任务。我知道如何 运行 一个周期性任务,但我的问题是我需要立即 运行 这个周期性任务恰好一次并且在该定期任务之后应该每天 运行 。目前我需要等待1天才能执行周期性任务,我该怎么办?

最好的选择是使用 OneTimePeriodicWorker 在返回 Result.success() 之前安排周期性 Worker。

因此,您立即将 WorkRequest 排队到 运行:

val asSoonAsPossibleWorkRequest = OneTimeWorkRequestBuilder<InitialWorker>
                .addTag(TAG_OUTPUT)
                .build()

WorkManager.getInstance(context).enqueue(asSoonAsPossibleWorkRequest)

并且您的 Worker 在返回之前将周期性 Worker 排入队列 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()
   }
}