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);
在我的 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);