0

我使用 WorkManager,我有一个 Worker,我每隔 1 小时定期运行它。但是在某些特殊情况下,我可以用 OneTimeWorkRequest 运行这个 Worker 吗?如果我这样做,它会结束 PeriodicWorkRequest 吗?

这样做的最佳方法是什么?

4

1 回答 1

0

您可以在两个不同的 WorkRequest 中使用相同的 Worker 类:

val oneTimeWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<MyWork>()
       .addTag("OneTime")
       .build()

val periodicWorkRequest = PeriodicWorkRequestBuilder<MyWork>(1, TimeUnit.HOURS)
      .addTag("Periodic")
      .build()

val workManager = WorkManager.getInstance(myContext)
workManager.enqueue(oneTimeWorkRequest)
workManager.enqueue(periodicWorkRequest)

然后,如果需要,您可以在 Worker 中使用getTags()来检测当前正在执行的 WorkRequest。

于 2022-01-23T16:35:56.320 回答