运行 在运行周期性任务之前立即工作 - 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()
}
}
我想在进程结束后立即 运行 执行周期性任务,然后 运行 执行周期性日常任务。我知道如何 运行 一个周期性任务,但我的问题是我需要立即 运行 这个周期性任务恰好一次并且在该定期任务之后应该每天 运行 。目前我需要等待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()
}
}