gpt4 book ai didi

android - 使用 Work Manager 时,BackoffPolicy.EXPONENTIAL 和 BackoffPolicy.LINEAR 之间有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:10 24 4
gpt4 key购买 nike

没有任何官方文档(至少我已经阅读过文档)解释这两种模式的用法和背后的机制。它们是如何工作的?他们解决了什么问题?

如果有人能为我简化它,我将不胜感激,因为我已经测试了两者,但没有看到任何有趣的东西。如果你问我,我会说 OneTimeWorkRequest.setBackoffCriteria() 不会影响工作。

这是我的代码,

@Override
public void doSomethingUseful(String order) {

Constraints constraint = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();

Data data = new Data.Builder()
.putString("order", order)
.build();

OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(OrderSenderWorker.class)
.setConstraints(constraint)
.setInputData(data)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 15, TimeUnit.SECONDS)
.build();

WorkManager.getInstance().beginUniqueWork("refresh-order", ExistingWorkPolicy.REPLACE, oneTimeWorkRequest).enqueue();

}

Worker 类中,每当我出错时,我都会在 doWork() 方法中返回 WorkerResult.RETRY

提前致谢。

最佳答案

考虑到 WorkManager 使用运行尝试计数 作为引用,对于 15 秒的 BackoffPolicy,将如下所示:

  • 对于线性:工作开始时间 +(15 * 运行尝试次数)

  • 对于指数:工作开始时间 + Math.scalb(15, run attempt计数 - 1)

工作开始时间,是工作首次执行的时间(第一次运行尝试)。

Run attempt count 是 WorkManager 尝试执行特定工作的次数。

另请注意,最大延迟的上限为 WorkRequest.MAX_BACKOFF_MILLIS

请注意,仅当您通过返回 WorkerResult.RETRY

指定工作需要重试时才会发生重试

关于android - 使用 Work Manager 时,BackoffPolicy.EXPONENTIAL 和 BackoffPolicy.LINEAR 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52496336/

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