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

时间:2018-11-16 13:49:54

标签: android image

我想缓存所有图像而不显示它们,以便即使没有可用的网络也可以显示图像 Fresco Image Loader有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以查看其cache页面以获取详细信息。

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

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());
}

有关更多详细信息,请参见here的完整示例。