
我在我的项目中使用Android Volley lib来执行网络请求,所有工作都很顺利但是我对这个lib的“取消”功能有一些麻烦.我解释我的问题..
我有一个活动,我在OnCreate方法执行请求,请求被调用,没问题.但是为了确保取消方法有效,我想测试并尝试两件事:
>我解雇了我的请求,就像这样取消它之后:
MySingleton.getMyData(“urltocall”,getDataListener,requestTag);
.MySingleton.getRequestQueue()cancelAll(requestTag);
这一个有效!取消被调用(我也可以在Volley的Request类中看到它):
public voID cancel() { mCanceled = true; // my breakpoint is called here }>我激活了我的请求,刚刚调用了我的活动的finish()方法,并且在活动的onDestroy和/或onStop方法中,我正在调用相同的代码:
MySingleton.getMyData(“urltocall”,getDataListener,requestTag);
.MySingleton.getRequestQueue()cancelAll(requestTag);
但这不起作用!
requestTag不是null并且很好地传递给Volley,所以我无法理解为什么第一种方法有效而不是另一种方法…知道我的目的是在调用onDestroy时取消请求.
谢谢你的帮助
解决方法:
我的猜测是,在第一种情况下,请求只被添加到RequestQueue,这就是调用cancelAll()的原因.在第二种情况下,启动请求和暂停/销毁活动之间会有一点延迟:在该延迟中,http请求已经开始.您可能不知道调用cancelAll()仅适用于仍在RequestQueue中的请求.它不适用于已经开始的http请求,没有办法阻止它.
话虽如此,文档here暗示一旦请求被取消(即通过调用cancel()),它可以被有效地视为Web服务从未被调用过.不会调用与特定请求相关联的回调(尽管收到的响应可能会保留在本地缓存中).
总结以上是内存溢出为你收集整理的Android – 取消Volley请求全部内容,希望文章能够帮你解决Android – 取消Volley请求所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)