我在iOS上使用MvvmCross 3.1.1和MvxImageView
。
MvxImageView
从Urls加载图片并缓存这些图片。但是,我想更新这些图像,但它会继续加载缓存的图像。
即。使用像www.lalalalalala.dk/bjar.png
这样的网址时。然后,此图像将从其他位置更新。但是Url保持不变。似乎MvxImageView
保留了缓存的图像,并且不加载新的图像。
是否可以删除缓存的图片并强制它从Url重新加载图片?
我试过看看
var service = Mvx.Resolve<IMvxImageHelper<UIImage>>();
但我找不到任何有用的东西。
UPDATE 我必须说这让我有点头疼。我找到了如何从文件系统中删除图像,但有时图像存储在内存中,因此无法删除。有任何建议如何解决这种情况?
答案 0 :(得分:0)
我最终在mvvmcross中扩展(复制/粘贴)图像缓存 - MvxImageCache和IMvxImageCache,并添加了这两种方法。
public void RemoveUrlFromCache(string url)
{
this.RunSyncOrAsyncWithLock(
() =>
{
Entry entry;
if (this._entriesByHttpUrl.TryGetValue(url, out entry))
{
this._entriesByHttpUrl.Remove(url);
}
this._fileDownloadCache.RequestLocalFilePath(url, (stream) => this.DeleteFile(url, stream),
(exception) => this.ProcessError(url, exception));
});
}
private void DeleteFile(string url, string filepath)
{
if (!string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(filepath))
{
var fileService = Mvx.Resolve<IMvxFileStore>();
fileService.DeleteFile(filepath);
}
}
使用此功能,我可以在droid的子类Imageview中调用以下内容(触摸类似)。
var cache = Mvx.Resolve<IMvxImageCache<Bitmap>>() as ImageCache<Bitmap>;;
if (cache != null)
{
cache.RemoveUrlFromCache(_imageUrl);
}
我会做一个拉取请求,希望他们会接受或做类似的事情