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

时间:2018-10-17 22:01:42

标签: image xamarin xamarin.forms ffimageloading

在我的Xamarin应用程序中,我在服务器上上传了一个新的“用户个人资料”图像,然后尝试使用该图像的新版本来更新该图像(忽略了图像uri还是一样)。

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

我已经尝试了几种解决方案,但是没有办法!即使重新启动应用程序,我也会得到图像的旧版本。

我尝试了一些类似的东西:

(MediaImageSource作为UriImageSource)。CacheValidity= new TimeSpan(-1);         FFImageLoading.Forms.CachedImage.InvalidateCache(MediaImageSource,FFImageLoading.Cache.CacheType.All,true);         FFImageLoading.ImageService.Instance.InvalidateCacheAsync(FFImageLoading.Cache.CacheType.All);

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

1 个答案:

答案 0 :(得分:1)

我执行以下操作:

// 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甚至在更改时也会做一个很好的淡入淡出动画。