gpt4 book ai didi

Android - 取消 Volley 请求

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:44 26 4
gpt4 key购买 nike

我在我的项目中使用 Android Volley 库来执行网络请求,一切都很好,但是我在使用这个库的“取消”功能时遇到了一些麻烦。我解释一下我的问题..

我有一个 Activity ,我在 OnCreate 方法中执行请求,请求被调用,没问题。但是为了确保 cancel 方法有效,我想测试并尝试两件事:

  1. 我发出我的请求,然后像这样取消它:

    MySingleton.getMyData("urltocall", getDataListener, requestTag);MySingleton.getRequestQueue().cancelAll(requestTag);

这个有效!取消被调用(我也可以在 Volley 的 Request 类中看到它):

public void cancel() {
mCanceled = true; // my breakpoint is called here
}
  1. 我触发了我的请求,在我的 Activity 调用 finish() 方法之后,在 Activity 的 onDestroy 和/或 onStop 方法中,我是调用相同的代码:

    MySingleton.getMyData("urltocall", getDataListener, requestTag);MySingleton.getRequestQueue().cancelAll(requestTag);

但这不起作用!

requestTag 不是 null 并且很好地传递给了 Volley,所以我不明白为什么第一种方法有效而另一种方法无效...知道我的目的是在 onDestroy 时取消请求被称为..

谢谢你的帮助

最佳答案

我的猜测是,在第一种情况下,请求仅被添加到 RequestQueue,这就是调用 cancelAll() 的原因。在第二种情况下,在开始请求和暂停/销毁 Activity 之间有轻微的延迟:在该延迟中,HTTP 请求已经开始。您可能不知道调用 cancelAll() 仅适用于仍在 RequestQueue 中的那些请求。它不适用于已经开始的 HTTP 请求,没有办法阻止它。

话虽如此,文档 here意味着一旦请求被取消(即通过调用 cancel()),它就可以被有效地视为 web 服务从未被调用过。与特定请求关联的回调将不会被调用(尽管收到的响应可能会保存在本地缓存中)。

关于Android - 取消 Volley 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com