在我的 Xamarin 应用中,我在服务器上上传了新的"用户配置文件"图像,然后尝试使用新版本的图像更新图像(请注意图像 uri 仍然相同(。
Xamarin 提供了一个图像缓存,我需要使其失效以强制图像从服务器重新加载。但似乎图像缓存不能失效!我找不到解决方案!
我已经尝试了几种解决方案,但找不到办法!即使我重新启动应用程序,我也会获得旧版本的映像。
我尝试了一些这样的东西:
(MediaImageSource as UriImageSource(。缓存有效性 = 新的时间跨度(-1(; FFImageLoad.Forms.CachedImage.InvalidateCache(MediaImageSource, FFImageLoading.Cache.CacheType.All, true(; FFImageLoad.ImageService.Instance.InvalidateCacheAsync(FFImageLoad.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
的孩子,所以没有必要猜测密钥:
FFImageLoading.Forms.CachedImage.InvalidateCache(myImageSource, CacheType.All, true);