图像缓存问题:图像源总是从缓存中选取图像。 Xamarin形式

问题描述 投票:0回答:1

我正在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表单图像控件。另外,个人资料图像是从相机拍摄并上传的,因此无法上传尺寸较小的自定义图像以消除延迟。

我希望,你们的问题很清楚。

c# xamarin xamarin.forms imagesource
1个回答
0
投票
//
// 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);
© www.soinside.com 2019 - 2024. All rights reserved.