我使用的是最新版本的Retrofit。我在活动和onDestroy
方法中执行多个请求,即当活动结束时,我希望终止所有待处理的请求,因此我呼叫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()
取消了通话,但已取消标志已收到false
,该标志本应为true
,即call.isCancelled()
应为true
。
但是,变量Throwable t
令人惊讶的是将原因发送为 java.io.IOException:已取消,并将detailMessage作为已取消。我添加了调试器的屏幕截图...
我的问题是,如果异常的原因被确定为取消请求,为什么取消的标志不显示正确的结果??
我已取消referring to this link取消正在进行的改装请求......
请帮助。
答案 0 :(得分:0)
尽管我讨厌回答我的问题,但由于没有人在这里回答,我写这篇文章是为了帮助其他人面对类似的问题。
是的,这是Retrofit Library中的一个错误。由于没有人在StackOverflow中响应,我在官方的Retrofit Github存储库中提出了相同的查询。 您可以在此处找到问题的链接。 https://github.com/square/retrofit/issues/2076
预计将在Retrofit版本v2.2中修复。