Android工作管理器-ExistingPeriodicWorkPolicy之间的差异.保持和.更换



通过参考:用于在后台中运行日常任务的Android WorkManager api

它使用WorkManager.enqueueUniquePeriodicWork来确保不会多次创建PeriodicWorkRequest

示例代码:

val work = PeriodicWorkRequestBuilder<SyncWork>(15,TimeUnit.MINUTES).build()
WorkManager.getInstance().enqueueUniquePeriodicWork("TaskTag",
ExistingPeriodicWorkPolicy.KEEP, work);

然而,我发现ExistingPeriodicWorkPolicy有两个选项,即ExistingPeriodicWorkPolicy.KEEPExistingPeriodicWorkPolicy.REPLACE可以使用。

我试图实现它并运行代码,但它确实显示了任何差异,而且两者的行为方式似乎相同。

我的不确定性:

ExistingPeriodicWorkPolicy.KEEPExistingPeriodicWorkPolicy.REPLACE的性能有何不同?

在您的示例中,您将要对一个新的工作请求(也称为worker(进行排队。如果您刚刚在运行时执行过此操作,则此工作程序已经存在状态ENQUEUED。

KEEP:如果前一个工作人员存在,那么您的新尝试将被忽略,否则您的新工作人员将被排队。

REPLACE:如果前一个工作人员存在,它将被取消,导致其状态为CANCELED。然后,或者,您的新工作人员将入队。

因此,如果你确信你的新员工与前一个员工相同(比如约束没有改变(,那么KEEP应该是安全的,否则REPLACE可能是更好的选择。

KEEP:如果存在具有相同唯一名称的现有挂起工作,则不执行任何操作。

替换:如果存在具有相同唯一名称的现有挂起工作,请取消并删除它。

相关内容

  • 没有找到相关文章