0

所以我必须从服务器下载一堆图像文件,并且我正在使用Priority-Job-Queue。到目前为止似乎工作正常,我正在使用一个简单AsyncTask的下载部分。

因为无论我只RetryConstraint.RETRYshouldReRunOnThrowable()回调中添加了什么,我都希望下载图像。我还添加了android.permission.RECEIVE_BOOT_COMPLETED权限Manifest.xml

这是正确/最好的方法吗,所以如果出现任何问题并且由于错误而未下载某些图像,作业队列将尝试一次又一次地下载它们,直到作业成功完成?

谢谢!

@Override
protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {

    return RetryConstraint.RETRY;
}
4

1 回答 1

3

查看源代码cancelForDeadline和限制,您应该满足这些getRetryLimit()限制,以便继续重试您的工作。

对于一个你只是 反对,所以在那种情况下overrideDeadlineToCancelInMs总是错误的。ParamscancelForDeadline

对于第二个,您必须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());
    }
}

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

于 2018-02-07T08:44:13.300 回答