有没有办法禁用 Volley 的缓存管理?我的应用程序正在使用 Google Volley 库来管理传输层,但我有自己的缓存管理实现,因为服务器不使用 Cache-Control 标头。我想要保存 Volley 缓存正在使用的空间,因为它完全没用。
有什么简单的方法吗?还是我应该实现自己版本的 RequestQueue
?
任何建议都感谢。
有没有办法禁用 Volley 的缓存管理?我的应用程序正在使用 Google Volley 库来管理传输层,但我有自己的缓存管理实现,因为服务器不使用 Cache-Control 标头。我想要保存 Volley 缓存正在使用的空间,因为它完全没用。
有什么简单的方法吗?还是我应该实现自己版本的 RequestQueue
?
任何建议都感谢。
如果您使用 Volley 中实现的任何默认请求类(例如 StringRequest、JsonRequest 等),那么请在将请求对象添加到 Volley RequestQueue 之前调用 setShouldCache(false):
request.setShouldCache(false);
myQueue.add(request);
如果您有自己的Request类实现,那么您可以在该类的构造函数中调用setShouldCache(false)。NoCache
对象作为第一个参数传递。第二个参数是基于您选择的AndroidHttpClient
或HttpURLConnection
的网络传输。RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));
要了解更多详细信息,请查看此文档。
根据文档,BasicNetwork
是Volley的默认网络实现。
request.setShouldCache(false);
似乎不足以处理GET请求。然而,在将请求添加到队列之前清除缓存似乎有所帮助。
myRequestQueue.getCache().clear();
在我的Volley单例中的getRequestQueue()
方法中,我在返回队列之前添加了这一行代码。