Официальных документов (как я читал, по крайней мере, я) не существует, которые объясняли бы использование и механизм этих двух режимов.Как они работают?И какую проблему они решают?
Я буду признателен, если кто-нибудь сможет упростить это для меня, потому что я протестировал оба и не увидел ничего интересного.Если вы спросите меня, я бы сказал, что 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
всякий раз, когда яесли что-то не так, я возвращаю WorkerResult.RETRY
в методе doWork()
.
Заранее спасибо.