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 中修复此问题。
我正在使用最新版本的 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 中修复此问题。