android - 当 Volley Request 被取消时

标签 android request android-volley

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

最佳答案

代码揭示了所有。

这真的取决于时间。

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

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

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

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

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

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

关于android - 当 Volley Request 被取消时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870320/

相关文章:

android - 如何在 Android 中检查图像是纵向还是横向?

android - 只有在 GridLayout 中显示 ViewGroup 的第一个 subview - 后续单元格在视觉上是无 subview 的

Android原生级别的视频编解码

javascript - 重定向到 Play 商店

Android Volley Post 请求 - JsonArrayRequest 的解决方法

android - Blogger api 总是返回 401 错误响应

facebook - 是否有可能获得 facebook 页面提供的所有报价

node.js - 错误 : toString failed Node. js 缓冲区

go - 拦截对 golang 中进程的响应

android - 为什么 DiskLruImageCache 会阻塞 I/O