OneTimeWorkRequest 和 PeriodicWorkRequest 可以一起使用吗?

Can OneTimeWorkRequest and PeriodicWorkRequest be used together?

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

执行此操作的最佳方法是什么?

您可以在两个不同的 WorkRequest 中使用同一个 Worker class:

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。