以 xamarin 形式加载位图图像

Bitmap image loading in xamarin forms

我在 xamarin 表单列表视图中加载图像时遇到内存问题,现在我需要在表单中实现位图图像,但我不能在 xamarin 表单中执行此操作我找不到任何命名空间,包括 xamarin 表单中的位图 我有一个普通的数据绑定代码,它也可以绑定图像

 public async void GetResult()
    //public  void GetResult()
    {
        try
        {
            IsBusy = true;
            var client = new HttpClient();
            var json = await client.GetStringAsync(string.Format(Url));
            var items = JsonConvert.DeserializeObject<ObservableCollection<cm_main_category>>(json.ToString());
            foreach (var item in items)
            {
                 item.image_url = "http://somelink.net" + item.image_url.Substring(1, item.image_url.Length - 1);
               // item.image_url = "http://127.0.0.1" + item.image_url.Substring(1, item.image_url.Length - 1);
                ListItems.Add(item);
            }
            IsBusy = false;
        }

现在我需要为此代码实现位图应该采用什么方法?

很明显你想通过URI绑定图片。这在 Xamarin.Forms.

中非常简单

您只需将 ImageCellImageSourceProperty 绑定到知道 URI 的 属性。 XAML 绑定和 C# 绑定的一个很好的例子可以在这里找到:https://www.syntaxismyui.com/xamarin-forms-listview-imagecell-recipe/

编辑: 从评论中复制:解决方案是将图像源设置为 null 并触发垃圾收集,如下所述:

 protected override void OnDisappearing()
    {
        BindingContext = null;
        Content = null;
        base.OnDisappearing();
        GC.Collect();
    }

在某些应用上,如果您的应用处理数以千计的数据且图像更好地添加位图,这将有所帮助

如果您想节省内存,可以尝试使用 FFImageLoading CachedImage,它是 Image API 具有高级内存缓存和下采样功能的兼容替代品。只需将 Image 替换为 CachedImage 并设置其下采样属性之一。

https://github.com/molinch/FFImageLoading