我使用 WorkManager,我有一个 Worker,我每隔 1 小时定期运行它。但是在某些特殊情况下,我可以用 OneTimeWorkRequest 运行这个 Worker 吗?如果我这样做,它会结束 PeriodicWorkRequest 吗?
这样做的最佳方法是什么?
我使用 WorkManager,我有一个 Worker,我每隔 1 小时定期运行它。但是在某些特殊情况下,我可以用 OneTimeWorkRequest 运行这个 Worker 吗?如果我这样做,它会结束 PeriodicWorkRequest 吗?
这样做的最佳方法是什么?
您可以在两个不同的 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。