How I can update image of fresco SimpleDraweeView, if it was set once by setImageURI
Asked Answered
B

2

9

I am using Facebook Fresco library and SimpleDraweeView for displaying avatar image from file:

  Uri avaURI = Uri.fromFile(new File(getCacheDir(), Constants.AVA_FILE_NAME));
  simpleDrawee.setImageURI(avaURI);

But what if I changed file with picture (deleted previous file and created the same one with new image), how can I update (refresh) SimpleDraweeView? Its still display the old version of image. (I tried to disable cache by Fresco.getImagePipeline().evictFromMemoryCache(avaURI); but it didn't help).

Beckiebeckley answered 26/5, 2015 at 10:27 Comment(0)
I
13

I believe you were on the right track. There are two more levels of storage that the old image may exist in, where it is most likely getting pull back in from. These expire after 60 days, I believe, so it will need to be flushed also.

Fresco.getImagePipeline().evictFromMemoryCache(avaURI);

Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString()));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString()));
Incalescent answered 4/6, 2015 at 8:24 Comment(2)
stumbled upon the same problem, any cleaner way to do this?Premium
I believe they have given us a cleaner solution through the use of an all-in-one method: Fresco.getImagePipeline().evictFromCache(uri);Incalescent
I
3
ImagePipeline imagePipeline = Fresco.getImagePipeline();
    imagePipeline.evictFromCache(Uri);
    imagePipeline.clearCaches();
draweeView.setImageURI(Uri);
Inapprehensive answered 20/4, 2017 at 6:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.