【问题标题】:When the Volley Request is canceled当 Volley Request 被取消时
【发布时间】:2014-09-16 13:37:38
【问题描述】:

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

【问题讨论】:

  • I want to hide the loading dialog after all the requests canceled, so I need to check if the request is canceled. 如果您不取消您的请求,它将不会被取消。

标签: android request android-volley


【解决方案1】:

代码显示全部。

这真的取决于时间。

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

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

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

  3. cancel() 在请求发送后但在响应到达之前被调用 - ExecutorDelivery 在到达时丢弃响应(第 92 行)并且不通知侦听器。这意味着当调用 onResponseonError 时,请求并没有被取消,并且像你一样在那里检查它,总是会返回 false。

  4. cancel() 在交付后被调用 - 没有任何反应,为时已晚。

我不完全了解您的情况,谁在取消请求,以及您为什么要查看,但希望这些信息足以帮助您。

【讨论】:

  • 感谢和平。实际上,我在 Activity 中有多个具有相同标签的请求,并且在请求执行之前显示了一个加载对话框,现在我想在所有请求取消后隐藏加载对话框,所以我需要检查请求是否被取消。但作为您的回答,我无法签入“onResponse()”方法。我会尝试另一种方式,或者你能给出任何意见
  • 3号有什么解决办法吗?请看我的问题:stackoverflow.com/questions/34577601/…
猜你喜欢
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2015-05-17
  • 2020-11-01
相关资源
最近更新 更多