Android Priority-Job-Queue 不断重试直到成功
Android Priority-Job-Queue keep retrying until success
所以我必须从服务器下载一堆图像文件,我正在使用 Priority-Job-Queue。到目前为止似乎工作正常,我在下载部分使用了一个简单的 AsyncTask
。
因为我想下载图片无论如何我只在shouldReRunOnThrowable()
回调上添加了RetryConstraint.RETRY
。我还在 Manifest.xml
上添加了 android.permission.RECEIVE_BOOT_COMPLETED
权限
这是 right/best 方式吗,所以如果出现任何问题,并且某些图像由于错误而未下载,作业队列将尝试一次又一次地下载它们,直到作业完成成功 ?
谢谢!
@Override
protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {
return RetryConstraint.RETRY;
}
查看 source code 有 cancelForDeadline
和 getRetryLimit()
约束,您应该满足这些约束才能继续重试作业。
对于第一个你只是不overrideDeadlineToCancelInMs
Params
对象,所以在那种情况下 cancelForDeadline
总是假的。
对于second一个,你必须在你的工作中覆盖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());
}
}
现在对我来说它看起来会 运行 直到成功。
所以我必须从服务器下载一堆图像文件,我正在使用 Priority-Job-Queue。到目前为止似乎工作正常,我在下载部分使用了一个简单的 AsyncTask
。
因为我想下载图片无论如何我只在shouldReRunOnThrowable()
回调上添加了RetryConstraint.RETRY
。我还在 Manifest.xml
android.permission.RECEIVE_BOOT_COMPLETED
权限
这是 right/best 方式吗,所以如果出现任何问题,并且某些图像由于错误而未下载,作业队列将尝试一次又一次地下载它们,直到作业完成成功 ?
谢谢!
@Override
protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {
return RetryConstraint.RETRY;
}
查看 source code 有 cancelForDeadline
和 getRetryLimit()
约束,您应该满足这些约束才能继续重试作业。
对于第一个你只是不overrideDeadlineToCancelInMs
Params
对象,所以在那种情况下 cancelForDeadline
总是假的。
对于second一个,你必须在你的工作中覆盖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());
}
}
现在对我来说它看起来会 运行 直到成功。