在外部保存缓存(SD卡)会导致在卸载期间不删除缓存。我不希望这种情况发生,我可以编辑UIL
库,以便它只在内部保存缓存(在应用程序内部)。我正在使用LimitedAgeDiscCache
,所以它会在任何给定的时间内被删除。
如果是,我应该从getOwnCacheDirectory
改变StorageUtils.class
方法吗?
答案 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);
希望这对你有用。