Android 壁画中的图像无效
Android Image invalidate in fresco
我正在将 android 图像缓存库从 picasso 迁移到 fresco。我想知道是否有任何方法可以使已经捕捉到的图像无效,因为我正在添加功能来替换现有图像在毕加索中有办法这样做
Picasso.with(context).invalidate(URI);
此行删除缓存的图像并使用新的 url 提供的图像,与
http://example.com/image_path
在壁画中我尝试使用
Fresco.getImagePipeline().evictFromMemoryCache(uri);
这是从视图中删除图像,但再次添加相同的旧缓存图像,而不是从网络获取新图像,因为它在 picasso 中工作。
请参考问题Invalidate cache in Picasso接受的答案在毕加索的情况下做得很好。
Fresco.getImagePipeline().evictFromMemoryCache(uri);
上面的代码行从捕捉器中删除了图像,但图像仍保留在磁盘中并在调用时呈现相同。我们还需要从磁盘中删除相同的图像。下面两行从磁盘缓存中删除图像,如果从磁盘缓存中保存,我们还需要删除缩略图。
Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));
注意:如果您使用的是自定义缓存键,则需要以这种方式进行更改。
试试这个
public static void clearCache(){
//
ImagePipeline imagePipeline = com.facebook.drawee.backends.pipeline.Fresco.getImagePipeline();
imagePipeline.clearMemoryCaches();
imagePipeline.clearDiskCaches();
// combines above two lines
imagePipeline.clearCaches();
}
我正在将 android 图像缓存库从 picasso 迁移到 fresco。我想知道是否有任何方法可以使已经捕捉到的图像无效,因为我正在添加功能来替换现有图像在毕加索中有办法这样做
Picasso.with(context).invalidate(URI);
此行删除缓存的图像并使用新的 url 提供的图像,与
http://example.com/image_path
在壁画中我尝试使用
Fresco.getImagePipeline().evictFromMemoryCache(uri);
这是从视图中删除图像,但再次添加相同的旧缓存图像,而不是从网络获取新图像,因为它在 picasso 中工作。
请参考问题Invalidate cache in Picasso接受的答案在毕加索的情况下做得很好。
Fresco.getImagePipeline().evictFromMemoryCache(uri);
上面的代码行从捕捉器中删除了图像,但图像仍保留在磁盘中并在调用时呈现相同。我们还需要从磁盘中删除相同的图像。下面两行从磁盘缓存中删除图像,如果从磁盘缓存中保存,我们还需要删除缩略图。
Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));
注意:如果您使用的是自定义缓存键,则需要以这种方式进行更改。
试试这个
public static void clearCache(){
//
ImagePipeline imagePipeline = com.facebook.drawee.backends.pipeline.Fresco.getImagePipeline();
imagePipeline.clearMemoryCaches();
imagePipeline.clearDiskCaches();
// combines above two lines
imagePipeline.clearCaches();
}