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 codecancelForDeadlinegetRetryLimit() 约束,您应该满足这些约束才能继续重试作业。

对于第一个你只是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());
    }
}

现在对我来说它看起来会 运行 直到成功。