我想在进程结束后立即运行定期任务,然后运行定期的每日任务。我知道如何运行定期任务,但我的问题是我需要立即运行此定期任务一次,之后常规定期任务应每天运行。目前我需要等待 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()
}
}