在我阅读过的文档中,没有任何官方文档解释这两种模式的用法和机制。它们如何工作?它们解决了什么问题?
如果有人能为我简化一下,我会很感激,因为我已经测试过两种模式,但并没有发现什么有趣的东西。如果你问我,我会说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
。
提前感谢。