我在 Activity 中有一个请求,我需要知道请求是否被取消,所以我使用 Request.isCanceled()
检查了 onResponse()
方法>,但它返回 false。不知道什么时候请求真的被取消了,我看了代码,还是没有答案。
最佳答案
代码揭示了所有。
这真的取决于时间。
一次request.cancel()
被调用,请求被标记为取消,这完全取决于它所处的状态。有 4 个选项:
cancel()
在缓存检查之前调用 - 请求被CacheDispatcher
丢弃在其run
循环(第 94 行)cancel()
被调用,在缓存检查之后但在实际执行请求之前没有缓存响应的请求 - 请求被NetworkDispatcher
丢弃在其run
循环(第 102 行)。cancel()
在发送请求之后但在响应到达之前被调用 -ExecutorDelivery
在到达时丢弃响应(第 92 行)并且不通知收听者。这意味着当onResponse
或onError
被调用,请求没有被取消,像你一样在那里检查它,将总是返回 false。cancel()
在交付后调用 - 没有任何反应,为时已晚。
我不完全了解你的情况,是谁取消了请求,你为什么要检查,但希望这些信息足以帮助你。
关于android - 当 Volley Request 被取消时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870320/