我正在Xamarin表单android应用中使用Image控件。在两个位置使用,一个位于汉堡包滑块上,另一个位于内容页面上。我正在从Web API解析图像并使用以下代码:
private void OnPresentedChanged(object sender, EventArgs e)
{
ImgProfile.Source = new UriImageSource()
{
Uri = new Uri(Constants.ProfilePicUrl),
CachingEnabled = true,
CacheValidity = new TimeSpan(5,0,0,0)
};
}
我在两个条件CachingEnabled = true/false
下都尝试了上面的代码。这是我观察到的:
CachingEnabled = False
:每次图像控件闪烁并重新加载图像。我可以看到从Web URL重新加载图片之间的间隔为一到两秒。同样在滑块菜单中。
CachingEnabled = true
:即使URL具有更新/不同的图像,我的图像控件仍继续显示缓存的版本,因为其个人资料页面和用户每天可以更改N次他/她的个人资料图像。因此,#1解决了我的问题,但闪烁的部分令人讨厌。
[请注意,我的图像控件是本机xamarin表单图像控件。另外,个人资料图像是从相机拍摄并上传的,因此无法上传尺寸较小的自定义图像以消除延迟。
我希望,你们的问题很清楚。
//
// Summary:
// Gets or sets a System.TimeSpan structure that indicates the length of time after
// which the image cache becomes invalid.
public TimeSpan CacheValidity { get; set; }
您为什么将CacheValidity
设置为5天?这意味着您缓存的图片始终有效,直到5天之后。
我认为是your image control keeps on displaying the cached version even if the url has newer/different image
的原因。
尝试提供一个较小的CacheValidity值,然后再次加载,类似于:
// 10 seconds
CacheValidity = new TimeSpan(0, 0, 0, 10);
// 10 minutes
CacheValidity = new TimeSpan(0, 0, 10, 0);
// 1 hour
CacheValidity = new TimeSpan(0, 1, 0, 0);