我正在将Android图像缓存库从毕加索迁移到壁画。我想知道是否有任何方法可以使已捕获的图像无效,因为我正在添加功能来替换现有图像,因此有办法在毕加索中做到这一点,例如

Picasso.with(context).invalidate(URI);


这行代码删除了缓存的图片,并使用提供的网址使用新图片,就像

http://example.com/image_path


在壁画中,我尝试使用

Fresco.getImagePipeline().evictFromMemoryCache(uri);


这是从视图中删除图像,但是再次添加了相同的旧缓存图像,并且由于在毕加索中工作而无法从网络中获取新图像。



请参阅问题Invalidate cache in Picasso对于毕加索来说,可接受的答案非常有用。

最佳答案

Fresco.getImagePipeline().evictFromMemoryCache(uri);


上面的代码行从捕获器中删除了图像,但是图像仍保留在磁盘中,并在被调用时进行渲染。我们还需要从磁盘上删除相同的映像。在下面的两行中,从磁盘缓存中删除了图像,如果从磁盘缓存中保存,我们也需要删除小的缩略图。

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


注意:如果您使用的是自定义缓存键,则需要以这种方式进行更改。

08-05 00:36