Xamarin,Android,RecyclerView:平滑背景下载对象,然后设置它们

时间:2018-05-08 08:54:09

标签: c# android

在我们的应用程序中,我们不断从服务器重新加载对象,然后将它们放在recyclerview scrollview中。现在,它确实工作正常,但它是一个很大的滞后。喜欢 - 它滚动,然后停止并重新加载一秒钟,然后滚动,然后重新加载,依此类推。我注意到其他应用程序的做法不同。例如,当一个人滚动浏览facebook时。可以一直向下滚动然后,当图像完成加载时,它们被放置在它们的空布局容器中。所以我认为这只能通过后台线程实现 - 所以我已经做到了,但结果是上面提到的。它就像Facebook或其他任何你滚动图像的应用程序一样光滑。这可能是什么问题:

    private async Task LoadTHEBOOKAsync(PVH_TheBook_Singles vh, int position, int fkTaskId)
    {
        await Task.Run(() =>
        {
            //Loading on another Thread
            int taskID = loadPhotos.pictures[position - (this.hasHeader ? 1 : 0)].taskID;
            int taskIDWHenTheBook = loadPhotos.pictures[position - (this.hasHeader ? 1 : 0)].fullscreenID;
            Bitmap bmp = loadImage(position);
            String commentCount = KumulosHelper.Functions.Pictures.GetCountOfComments
                                    (fkTaskId.ToString()).ToString();
            String LikeCount = loadPhotos.pictures[position - (this.hasHeader ? 1 : 0)].likes.ToString();
            int taskDoneId = loadPhotos.pictures[position - (this.hasHeader ? 1 : 0)].taskdoneid;
            String exp = null;

            if (taskID != 0)
            {
                exp = BookOfLife.Challenges.Libary.Instance.getTask(taskID).Experience.ToString() + "ap";
            }
            else
            {
                exp = BookOfLife.Challenges.Libary.Instance.getTask(taskIDWHenTheBook).Experience.ToString() + "ap";
            }

            // Setting on UI Thread
            ((Activity)ctx).RunOnUiThread(() =>
            {
                vh.Image.SetImageBitmap(bmp);
                vh.txtComments.Text = commentCount;
                vh.txtLikeCountBlue.Text = LikeCount;
                vh.taskdoneid = taskDoneId;
                vh.txtap.Text = exp;                                   
            });
        });

    }

正如您所看到的,所有的下载都是在异步任务中完成的,只有放置是在ui线程上完成的。这是错的吗?因为我似乎无法找到任何其他解决方案吗?我的意思是,我必须在UI线程上设置我的图像,对吗?所以我必须阻止它一秒钟直到一切正常,不是吗?

任何帮助都会很棒。 谢谢! :)

1 个答案:

答案 0 :(得分:0)

您可以检查xamarin内置的WoWonder Android Timeline,并在那里获得有关新闻源系统的更多信息

enter image description here