当排球请求被取消时

时间:2014-09-16 13:37:39

标签: android request android-volley

我在活动中有一个请求,我需要知道请求是否被取消,所以我使用onResponse()检查了Request.isCanceled()方法,但它返回false。我不知道什么时候请求真的被取消了,我已经阅读了代码,仍然没有答案。

1 个答案:

答案 0 :(得分:8)

代码显示ALL。

这实际上取决于时机。

一旦request.cancel()被调用,请求就会被标记为取消,这一切都取决于它所处的状态。有4个选项:

    在缓存检查之前调用
  1. cancel() - 请求被CacheDispatcher循环中的run丢弃(第94行)

  2. cancel()在缓存检查后没有缓存响应的请求上调用,但在实际执行请求之前 - NetworkDispatcher放弃请求在run循环(第102行)。

  3. cancel()在请求发送后被调用,但在响应到达之前 - ExecutorDelivery会在到达时丢弃响应(第92行)并且不会通知听众。这意味着当调用onResponseonError时,请求尚未被取消,并且在那里检查请求,就像您一样,将始终返回false。

  4. cancel()在分娩后被召唤 - 没有任何反应,为时已晚。

  5. 我并不完全了解您的情况,谁取消了请求,以及您为什么要检查,但希望有足够的信息来帮助您。