gpt4 book ai didi

Android 工作管理器 - ExistingPeriodicWorkPolicy.KEEP 和 .Replace 之间的区别

转载 作者:搜寻专家 更新时间:2023-11-01 08:20:40 24 4
gpt4 key购买 nike

引用: Android WorkManager api for running daily task in Background

它使用 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:如果之前的 worker 存在,您的新尝试将被忽略,否则您的新 worker 将入队。

REPLACE:如果之前的 worker 存在,它将被取消,导致它的状态为 CANCELED。然后,否则,您的新工作人员将排队。

因此,如果您确定您的新工作人员与之前的工作人员相同(假设约束没有改变),那么 KEEP 应该是安全的,否则 REPLACE 可能是更好的选择。

关于Android 工作管理器 - ExistingPeriodicWorkPolicy.KEEP 和 .Replace 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51627960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com