Android PeriodicWorkRequestBuilder如何避免双重调度?

时间:2019-05-22 09:47:12

标签: android android-workmanager

我正在使用新的WorkManager,想知道当我安排定期工作时,如何避免重新安排它,它是否由OS自动处理?

2 个答案:

答案 0 :(得分:0)

这是一个定期工作程序,因此它会自动处理重新安排下一次发生的时间。 为避免重新安排它,可以从Worker返回Result.failed(),也可以从应用中取消WorkRequest。在这种情况下,您应该按照documentation中的说明处理Worker内部的取消。

答案 1 :(得分:0)

如果您只是因为不想重复工作而需要检查已经在运行的工作管理器。您可以简单地使用enqueueUniquePeriodicWork()

  

此方法可让您排队一个唯一名称的   PeriodicWorkRequest,其中只有一个   特定名称可以一次处于活动状态。例如,您只能   希望激活一个同步操作。如果有一个未决,您可以   选择运行它还是将其替换为您的新作品。

因此您无需担心作品的重复性。

 workmanager.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.KEEP , photoCheckWork);
  • TAG是唯一名称,工作经理将使用它来检查重复性。
  • 您可以choose between ExistingPeriodicWorkPolicy.KEEPExistingPeriodicWorkPolicy.REPLACE