Android Priority-Job-Queue повторять попытки до успеха
Поэтому мне нужно загрузить кучу файлов изображений с сервера, и я использую Priority-Job-Queue. Пока, кажется, работает нормально, и я использую простой AsyncTask
для загрузки части.
Поскольку я хочу, чтобы изображения загружались независимо от того, что я только добавил RetryConstraint.RETRY
на shouldReRunOnThrowable()
Перезвоните. Я также добавил android.permission.RECEIVE_BOOT_COMPLETED
разрешение на Manifest.xml
Является ли это правильным / лучшим способом, так что если есть какие-либо проблемы, и некоторые изображения не загружаются из-за ошибки, очередь заданий будет пытаться загрузить их снова и снова, пока работа не будет успешно завершена?
Спасибо!
@Override
protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {
return RetryConstraint.RETRY;
}
1 ответ
Глядя на исходный код есть cancelForDeadline
а также getRetryLimit()
ограничения, которые вы должны выполнять, чтобы продолжать повторять свою работу.
Для первого вы просто не overrideDeadlineToCancelInMs
за Params
объект, так что в этом случае cancelForDeadline
всегда ложно.
Для второго вы должны переопределить getRetryLimit
метод в вашей работе, например:
protected int getRetryLimit() {
return Integer.MAX_VALUE;
}
И, наконец, если вы достигли предела повторных попыток, вы можете снова запланировать свою работу:
@Override
protected void onCancel(@CancelReason int cancelReason, @Nullable Throwable throwable) {
if (cancelReason == CancelReason.REACHED_DEADLINE) {
jobManager.addJobInBackground(new FetchImageJob());
}
}
Теперь для меня это выглядит так, как будто будет работать до успеха.