在运行定期任务之前立即运行工作 - 工作管理器



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

最好的选择是使用在返回Result.success()之前安排定期工作线程的OneTimePeriodicWorker

因此,您将工作请求排队以立即运行:

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()
   }
}