是否可以做到以上几点?
我的场景是天气图形,其 URL 保持不变,而底层图像实际上发生了变化。以下是我想介绍的情况: - 在我的应用程序的同一会话中(通常 2-5 分钟),我不想从网络重新加载图像 - 大约 15 分钟后,图像可能已经改变,因此甚至如果我有缓存版本,我想转储它。- 当尝试在离线时重新加载图像时,任何图像(包括旧图像)都比没有图像好,所以我想从磁盘缓存中显示它。
这种设置可以吗?如果它对 UIL 可行,这似乎不是很明显。
感谢伟大的图书馆!
是否可以做到以上几点?
我的场景是天气图形,其 URL 保持不变,而底层图像实际上发生了变化。以下是我想介绍的情况: - 在我的应用程序的同一会话中(通常 2-5 分钟),我不想从网络重新加载图像 - 大约 15 分钟后,图像可能已经改变,因此甚至如果我有缓存版本,我想转储它。- 当尝试在离线时重新加载图像时,任何图像(包括旧图像)都比没有图像好,所以我想从磁盘缓存中显示它。
这种设置可以吗?如果它对 UIL 可行,这似乎不是很明显。
感谢伟大的图书馆!
我认为这是您的解决方案:
File cacheDir = StorageUtils.getCacheDirectory(context); // or any other folder
MemoryCacheAware<String, Bitmap> memoryCacheCore
= new LruMemoryCache(4 * 1024 * 1024); // or any other implementation
MemoryCacheAware<String, Bitmap> memoryCache
= new LimitedAgeMemoryCache<String, Bitmap>(memoryCacheCore, 15 * 60);
DiscCacheAware discCache = new LimitedAgeDiscCache(cacheDir, 15 * 60);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.memoryCache(memoryCache)
.discCache(discCache)
...
.build();
UPD: UIL 总是首先在内存缓存中搜索需要的图像。然后 UIL 在磁盘缓存中搜索它。然后它从网络下载图像。
如果您使用“限制年龄”内存缓存或磁盘缓存,则位图或图像文件将在超时后从缓存中删除(实际上它们将在缓存中搜索时被删除)。逻辑如下:
不要忘记启用缓存(在显示选项中DisplayImageOptions
)。