如果我已经使用setImageURI一次设置了fresco SimpleDraweeView的图片,我该如何更新它的图片呢?

9
我正在使用Facebook Fresco库和SimpleDraweeView从文件中显示头像图像:
  Uri avaURI = Uri.fromFile(new File(getCacheDir(), Constants.AVA_FILE_NAME));
  simpleDrawee.setImageURI(avaURI);

如果我更改了一张图片文件(删除以前的文件并创建了一个带有新图像的相同文件),该如何更新(刷新)SimpleDraweeView?它仍然会显示旧版本的图像。(我尝试通过 Fresco.getImagePipeline().evictFromMemoryCache(avaURI); 禁用缓存,但没有帮助)。

2个回答

13

我相信你的想法是正确的。旧图像可能还存在于两个更高级别的存储中,最有可能从中恢复。我相信这些存储会在60天后到期,因此也需要进行清除。

Fresco.getImagePipeline().evictFromMemoryCache(avaURI);

Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString()));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString()));

遇到了同样的问题,有更简洁的方法吗? - Sarthak Mittal
7
我相信他们通过使用全能方法提供了一个更为简洁的解决方案:Fresco.getImagePipeline().evictFromCache(uri)。 - frogmanx

3
ImagePipeline imagePipeline = Fresco.getImagePipeline();
    imagePipeline.evictFromCache(Uri);
    imagePipeline.clearCaches();
draweeView.setImageURI(Uri);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接