库仅显示选项以在显示选项中启用/禁用缓存。有没有办法在加载图像时避免光盘或内存缓存检查?
我的问题是库总是先检查光盘缓存。我的光盘缓存设置为小缩略图大小。当我需要加载屏幕大小的图像时,我无法跳过光盘缓存,它总是让我得到分辨率较低的图像。
答案 0 :(得分:2)
UIL始终在显示之前检查缓存。所以没有办法避免没有变化的来源。
但我认为您可以通过扩展磁盘缓存来解决您的问题。当您要加载完整大小的图像时,目标是从get()
方法返回不存在的文件。
所以你应该像往常一样加载缩略图。当您需要显示完整大小的图像时,您应该在显示选项(DisplayImageOptions
)中禁用磁盘上的缓存,然后执行以下操作:
((MyDiscCache) imageLoader.getDiscCache()).setIgnoreDiskCache(true);
因此,您的缓存必须返回任何不存在的文件(但不是null)。
当您返回显示缩略图时,您应该"启用" (setIgnoreDiskCache(false)
)磁盘缓存。
<强> UPD:强> 创建自己的磁盘缓存并将其设置为config。
public class MyDiscCache extends UnlimitedDiscCache {
private boolean ignoreDiskCache;
public MyDiscCache(File cacheDir) {
super(cacheDir);
}
public MyDiscCache(File cacheDir, FileNameGenerator fileNameGenerator) {
super(cacheDir, fileNameGenerator);
}
@Override
public File get(String key) {
if (ignoreDiskCache) {
return new File("fakePath");
} else {
return super.get(key);
}
}
public void setIgnoreDiskCache(boolean ignoreDiskCache) {
this.ignoreDiskCache = ignoreDiskCache;
}
}