禁用Volley缓存管理

Pro*_*bio 28 android caching android-volley

有没有办法可以禁用Volley缓存管理?我的应用程序使用Google Volley库来管理传输层,但我有自己的缓存管理器实现,因为服务器不使用Cache-Control标头.我想节省Volley缓存正在使用的空间,因为它完全没用.

有什么简单的方法吗?或者我应该实现自己的版本RequestQueue

任何建议表示赞赏.

Hun*_*der 71

如果您使用volley中实现的任何默认Request类(例如StringRequest,JsonRequest等),则在将请求对象添加到排序 RequestQueue之前调用setShouldCache(false):

request.setShouldCache(false);
myQueue.add(request);
Run Code Online (Sandbox Code Playgroud)

如果您有自己的Request类实现,那么可以在类的构造函数中调用setShouldCache(false).

此解决方案单独禁用每个请求的缓存.如果要从排球库中全局禁用缓存,可以在Request类中将mShouldCache变量永久设置为false.


Ano*_*nor 12

您可以从构造函数创建RequestQueue,并将NoCache对象作为第一个参数传递.第二个参数是基于您选择的AndroidHttpClient或者的网络传输HttpURLConnection.

RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此文档.

根据文档,BasicNetwork是Volley的默认网络实现.


Ver*_*rsa 7

request.setShouldCache(false);
Run Code Online (Sandbox Code Playgroud)

对于GET请求似乎不够.但是,在添加到队列之前清除缓存似乎有所帮助

myRequestQueue.getCache().clear();
Run Code Online (Sandbox Code Playgroud)

我把它放在getRequestQueue()我的Volley单身人士的方法中.在返回队列之前.