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

问题描述 投票:0回答:1

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

android android-workmanager periodic-task
1个回答
2
投票

最好的选择是在返回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()
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.