我想在进程结束后立即运行一个周期性任务,然后运行一个定期的每日任务。我知道如何运行一个周期性任务,但我的问题是我需要立即执行一次这个周期性任务,并且应该每天运行常规周期性任务。目前我需要等待1天才能执行定期任务,我该怎么做?
最好的选择是在返回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()
}
}