我正在使用最新版本的Retrofit。我在一项活动和onDestroy
方法中执行多个请求,即当活动结束时,我希望终止所有待处理的请求,因此我要求okHttpClient.dispatcher().cancelAll()
。取消所有请求后,Android改进了'onFailure()'中'取消'标志的意外值
请求的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取消正在进行的改造请求...
请帮助。
这可能是改造库中的一个错误吗?或者我错过了什么?从这里给出的链接https://futurestud.io/tutorials/retrofit-2-cancel-requests,他们也使用'call.isCanceled()'方法来达到这个目的。如果它是一个bug,我可以在他们的github仓库中提出问题吗?我需要你的建议.... – oathkeeper