如何在不使用壁画显示的情况下缓存所有图像



我想缓存所有图像而不显示它们,这样即使没有任何可用的网络,图像也会显示出来使用Fresco图像加载器有可能吗?

是的,您可以查看他们的缓存页面以了解详细信息。

要配置缓存,您应该执行以下操作:

DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()
.set....
.set....
.build()
// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)

然后要检查它是否持久存在于本地存储缓存中,可以使用:

DataSource<Boolean> inDiskCacheSource = imagePipeline.isInDiskCache(uri);
DataSubscriber<Boolean> subscriber = new BaseDataSubscriber<Boolean>() {
@Override
protected void onNewResultImpl(DataSource<Boolean> dataSource) {
if (!dataSource.isFinished()) {
return;
}
boolean isInCache = dataSource.getResult();
// your code here
}
};
inDiskCacheSource.subscribe(subscriber, executor);

要预取图像,您可以使用以下方法:

final PrefetchSubscriber subscriber = new PrefetchSubscriber();
for (Uri uri : mUris) {
final DataSource<Void> ds = Fresco.getImagePipeline().prefetchToDiskCache(ImageRequest.fromUri(uri), null);
ds.subscribe(subscriber, UiThreadImmediateExecutorService.getInstance());
}

请参阅此处的完整样本以了解更多详细信息。

相关内容

最新更新