Android Universal Image Loader:加载图片时是否通过光盘/内存缓存检查?

时间:2014-02-22 22:31:58

标签: android universal-image-loader

库仅显示选项以在显示选项中启用/禁用缓存。有没有办法在加载图像时避免光盘或内存缓存检查?

我的问题是库总是先检查光盘缓存。我的光盘缓存设置为小缩略图大小。当我需要加载屏幕大小的图像时,我无法跳过光盘缓存,它总是让我得到分辨率较低的图像。

1 个答案:

答案 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;
    }
}