有没有办法可以禁用Volley缓存管理?我的应用程序使用Google Volley库来管理传输层,但我有自己的缓存管理器实现,因为服务器不使用Cache-Control标头。我想保存Volley缓存正在使用的空间,因为它完全没用。
有简单的方法吗?或者我应该实现我自己的RequestQueue
版本?
任何建议都表示赞赏。
答案 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
对象作为第一个参数传递。第二个参数是基于您选择AndroidHttpClient
或HttpURLConnection
的网络传输。
RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));
根据文档,BasicNetwork
是Volley的默认网络实施。
答案 2 :(得分:6)
request.setShouldCache(false);
对于GET请求,似乎不够。 但是,在添加到队列之前清除缓存似乎有帮助
myRequestQueue.getCache().clear();
我把它放在我的Volley单身人士的getRequestQueue()
方法中。在返回队列之前。