我使用volley加载我的图像并缓存它们。
mImageLoader = new ImageLoader(getRequestQueue(context), mImageCache);
其中mImageCache是DiskLruImageCache。
凌空从ImageRequest
获取来自服务器的图片,扩展了ImageRequest<Bitmap>
并且在请求类中有boolean定义是否缓存响应
/** Whether or not responses to this request should be cached. */
private boolean mShouldCache = true;
且ImageRequest
已禁用mShouldCache
。
正如您所看到的,默认值为true,因此在volley提取图像后,它会通过diskBasedCache
将其缓存在volley缓存目录下。
所以现在我必须从ImageRequest
缓存一个位图,从ImageLoader
缓存一个,如何禁用ImageRequest
缓存?或任何其他建议?
答案 0 :(得分:2)
您在给ImageLoader
磁盘缓存时犯了一个错误。 Volley已经为每个响应提供了共享磁盘缓存,无论是图像不是,默认情况下根据HTTP缓存头工作。
您应该为ImageLaoder
提供内存位图缓存。查看文档。
它的原因是Volley的设计方式。这是Volley的图像请求逻辑:
因此,通过提供磁盘缓存 - 您既可以减慢应用程序的速度,又可以节省多达两倍的磁盘空间,同时节省冗余图像。
使用内存缓存。