Xamarin - 如何为特定图像重置图像缓存

Xamarin - how to reset image cache for a specific image

在我的 Xamarin 应用程序中,我在服务器上上传了一个新的 "user profile" 图像,然后我尝试使用新版本的图像更新图像(注意到图像 uri 仍然相同)。

Xamarin 提供了一个图像缓存,我需要使它失效以强制从服务器重新加载图像。但似乎无法使图像缓存失效!我找不到解决方案!

我试了好几种办法,都没有办法!即使我重新启动应用程序,我也会得到旧版本的图像。

我尝试过一些这样的东西:

(MediaImageSource as UriImageSource).CacheValidity = new TimeSpan(-1); FFImageLoading.Forms.CachedImage.InvalidateCache(MediaImageSource, FFImageLoading.Cache.CacheType.All, 真); FFImageLoading.ImageService.Instance.InvalidateCacheAsync(FFImageLoading.Cache.CacheType.All);

但是没有任何效果,欢迎任何想法?谢谢

我执行以下操作:

// this.Img is the FFImageLoading.CachedImage in my view
var source = this.Img.Source as FileImageSource;

// Reset cache using the global instance (the key is the file name, I assume it is the uri for UriImageSource)
await ImageService.Instance.InvalidateCacheEntryAsync( source.File, CacheType.All, true );

// Reassign the image source (since the binding has not changed per se, the UI may miss the change otherwise)
this.Img.Source = new FileImageSource(...);

这会重新加载图像,FFImageLoading 甚至会在图像发生变化时制作漂亮的淡入淡出动画。

CachedImage里面其实有一个静态方法可以接受ImageSource的任何孩子,所以不用猜key:

FFImageLoading.Forms.CachedImage.InvalidateCache(myImageSource, CacheType.All, true);