Meh*_*esh 9 android android-workmanager
没有任何官方文档(至少我已经阅读了文档)来解释这两种模式背后的用法和机制。它们是如何工作的?他们解决了什么问题?
如果有人可以为我简化它,我将不胜感激,因为我已经测试了两者并且没有看到任何有趣的事情。如果你问我,我会说不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();
}
Run Code Online (Sandbox Code Playgroud)
在Worker课堂上,每当我出错时,我都会WorkerResult.RETRY在doWork()方法中返回。
提前致谢 。
考虑到 WorkManager 使用运行尝试计数作为参考,对于15 秒的BackoffPolicy,将如下所示:
对于线性:工作开始时间 +(15 * 运行尝试次数)
对于指数: 工作开始时间 + Math.scalb(15, 运行尝试次数 - 1)
该工作开始时间,是当作品首次执行(第一次运行的尝试)。
运行尝试计数是 WorkManager 尝试执行特定工作的次数。
另请注意,最大延迟将被限制在WorkRequest.MAX_BACKOFF_MILLIS。
考虑到只有当您通过返回WorkerResult.RETRY指定工作需要重试时才会发生重试
| 归档时间: |
|
| 查看次数: |
4029 次 |
| 最近记录: |