禁用Volley缓存管理

时间:2014-08-15 20:00:36

标签: android caching android-volley

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

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

任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:65)

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

request.setShouldCache(false);
myQueue.add(request);

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

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

答案 1 :(得分:11)

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

RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));

有关详情see this documentation

根据文档,BasicNetwork是Volley的默认网络实施。

答案 2 :(得分:6)

request.setShouldCache(false);
对于GET请求,

似乎不够。 但是,在添加到队列之前清除缓存似乎有帮助

myRequestQueue.getCache().clear();

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