我正在使用这样的截击。问题是,在我的情况下,Volley只将图像缓存在内存中而不是磁盘上。如果我强制我的应用程序,所有缓存将从内存中删除。如何在内存和磁盘上都有缓存?
public ImageLoader getImageLoader() {
getRequestQueue();
if (mImageLoader == null) {
mImageLoader = new ImageLoader(this.mRequestQueue, new LruBitmapCache(getApplicationContext()));
}
return this.mImageLoader;
}
holder.picture.setImageUrl(url, MyApplication.getInstance().getImageLoader());
注意: 我曾使用过Jake Wharton编写的DiskLruCache
,一切正常但是这样,缓存只存在于磁盘上。我希望Volley从内存中获取位图(如果存在),否则从磁盘(如果存在)获取,如果URL没有缓存,则进行网络调用。
答案 0 :(得分:0)
Volley首先尝试在LruBitmapCache中查找缓存,您可以在ImageLoader.java中找到相关代码
myCellName .getColumn() '9
然后Volley与其他http请求(不使用ImageLoader)的方式相同。简而言之,默认情况下使用DiskLruCache。 Volley使用CacheDispatcher处理磁盘上的缓存。缓存策略基于Cache-Control和/或来自服务器的其他标头。
据我所知,尽管没有Cache-Control或相关标头,但volley默认会缓存所有请求。但是,如果不存在此类标头,则不会使用缓存。
如果您不想更改凌空逻辑,可以考虑从服务器端支持缓存。