Как кэшировать все изображения, не отображая их с фреской? - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу кэшировать все изображения без их отображения, чтобы изображение отображалось, даже если нет доступной сети Возможно ли это с Fresco Image Loader ?

1 Ответ

0 голосов
/ 16 ноября 2018

Да, вы можете, смотрите их страницу кеш для подробностей.

Чтобы настроить кэш, вы должны сделать что-то вроде:

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

См. здесь их полный образец для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...