Android 取消所有请求后,在 'onFailure()' 中改进 'canceled' 标志的意外值

Android retrofit unexpected value of 'canceled' flag in 'onFailure()' after cancelling all Requests

我正在使用最新版本的 Retrofit。我在 activity 和 onDestroy 方法中执行多个请求,即当 activity 结束时,我希望终止所有未决请求,因此我调用 okHttpClient.dispatcher().cancelAll()

请求的onFailure方法是这样处理的:-

        @Override
        public void onFailure(Call<APIResponseClass> call, Throwable t) {

            if (call != null && !call.isCanceled()) {
                // Call is not cancelled, Handle network failure

                onNetworkFailure(call, t);

            } else if (call != null && call.isCanceled()){

                // Call is CANCELLED. IGNORE THIS SINCE IT WAS CANCELLED.

            }
        }


问题是,我在 onFailure 方法中收到意外行为。尽管通过 okHttpClient.dispatcher().cancelAll() 取消了呼叫,但 canceled 标志被接收为 false,应该是 true,即 call.isCancelled()应该是 true.

然而,变量 Throwable t 令人惊讶地发送原因 java.io.IOException: Canceled 和 detailMessage 作为 Canceled。我添加了调试器的屏幕截图...

我的问题是,如果异常的原因确定为取消请求,为什么取消标志没有显示正确的结果??

我已经 referring to this link 取消了正在进行的改造请求...

请帮忙。

尽管我讨厌回答我的问题,因为这里没有人回答,我写这篇文章是为了帮助其他面临类似问题的人。

是的,这是 Retrofit 库中的错误。由于在 Whosebug 中没有人回应,我在官方 Retrofit Github 存储库中提出了相同的查询。 您可以在此处找到问题的 link。 https://github.com/square/retrofit/issues/2076

预计将在 Retrofit 版本 v2.2 中修复此问题。