我可以强制Universal Image Loader仅在内部缓存吗?

时间:2014-02-06 06:40:18

标签: android android-imageview universal-image-loader

在外部保存缓存(SD卡)会导致在卸载期间不删除缓存。我不希望这种情况发生,我可以编辑UIL库,以便它只在内部保存缓存(在应用程序内部)。我正在使用LimitedAgeDiscCache,所以它会在任何给定的时间内被删除。

如果是,我应该从getOwnCacheDirectory改变StorageUtils.class方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ImageLoaderConfiguration.Builder(context)的方法diskCache()为通用映像加载器设置DiskCache。此自定义磁盘缓存可能更喜欢内部缓存。

我们可以通过Universal-Image-Loader及其StorageUtils的公共方法创建内部存储。

例如,

// false to indicator we don't prefer external storage.
File cacheDir = StorageUtils.getCacheDirectory(context, false); 
// to avoid exception, we still prepare a default one as universal image loader
File reserveCacheDir = StorageUtils.getCacheDirectory(context);

long cacheMaxSize = 15 * 1024 * 1024; // 15 MB

DiskCache diskCache;
try {
    diskCache = new LruDiscCache(cacheDir, reserveCacheDir, DefaultConfigurationFactory.createFileNameGenerator(), cacheMaxSize, 0);
} catch (IOException e) {
    e.printStackTrace();
    // if we cannot use LruDiscCache with internal cache, jut use DefaultConfigurationFactory instead
    diskCache = DefaultConfigurationFactory.createDiskCache(context, DefaultConfigurationFactory.createFileNameGenerator(), cacheMaxSize, 0);
}

ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(context)
        .diskCache(diskCache);
ImageLoaderConfiguration config = builder.build();
ImageLoader.getInstance().init(config);

希望这对你有用。