2

我在 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;
        }

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

4

3 回答 3

1

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

https://github.com/molinch/FFImageLoading

于 2016-02-27T18:57:28.823 回答
0

显然你想通过 URI 绑定图像。这在 Xamarin.Forms 中非常简单。

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

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

于 2015-08-19T09:31:13.180 回答
0
 protected override void OnDisappearing()
    {
        BindingContext = null;
        Content = null;
        base.OnDisappearing();
        GC.Collect();
    }

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

于 2015-08-20T11:00:07.467 回答