我在活动中有一个请求,我需要知道请求是否被取消,所以我使用onResponse()
检查了Request.isCanceled()
方法,但它返回false。我不知道什么时候请求真的被取消了,我已经阅读了代码,仍然没有答案。
答案 0 :(得分:8)
代码显示ALL。
这实际上取决于时机。
一旦request.cancel()
被调用,请求就会被标记为取消,这一切都取决于它所处的状态。有4个选项:
cancel()
- 请求被CacheDispatcher
循环中的run
丢弃(第94行)
cancel()
在缓存检查后没有缓存响应的请求上调用,但在实际执行请求之前 - NetworkDispatcher
放弃请求在run
循环(第102行)。
cancel()
在请求发送后被调用,但在响应到达之前 - ExecutorDelivery
会在到达时丢弃响应(第92行)并且不会通知听众} STRONG>。这意味着当调用onResponse
或onError
时,请求尚未被取消,并且在那里检查请求,就像您一样,将始终返回false。
cancel()
在分娩后被召唤 - 没有任何反应,为时已晚。
我并不完全了解您的情况,谁取消了请求,以及您为什么要检查,但希望有足够的信息来帮助您。