首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存管理问题

内存管理问题
EN

Stack Overflow用户
提问于 2016-06-18 13:17:56
回答 1查看 126关注 0票数 0

我有三个问题

  1. 当我们调用recyclerview.setadapter(新适配器)时,它对android的内存影响有多大?
  2. 当在android上使用facebook应用程序时,我发现,显然,如果我们向下滚动一整天,facebook的新闻提要就不会停止。但是facebook并没有同时加载所有的新闻信息。当我们向下滚动时,它一点一点地负荷。所以我的问题是,我已经做了一个应用程序,我在我的回收视图中加载用户提出的问题。但是随着时间的推移,问题的数量越来越多,我仍然在同时展示所有的问题,这给设备和应用程序的内存带来了损失,所以我如何加载一些问题,然后用户就会向下滚动。我会像facebook一样载入下一个问题吗?
  3. 类似于第二个问题。如何一次只在屏幕上,在内存中加载我正在显示的问题?

我不包括代码,因为我认为没有必要,因为我没有做任何与普通回收视图有很大不同的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 15:40:34

RecyclerView中设置一个新适配器与只调用notifyDataSetChanged()之间有很大的区别,因为当您调用setting时,应用程序将不得不重新创建其所有视图持有者,并重新绑定所需的所有视图。RecyclerView可能就是这样做的,而且做这些工作是不必要的,也是任务处理的。特别是当你每次收到新的数据时都会调用它,这对你的android应用程序来说将是一项艰巨的工作。RecyclerView的美丽之处就在它的名字里。它通过重用(或回收)视图来减少你的应用程序在滚动屏幕时的过载量。即使您有10000个复杂的视图,由于RecyclerView的实现,该应用程序仍然工作得很好。所有的视图都不会在记忆中停留很长时间。

对于第二个问题,您可以检查RecyclerView中的某个位置是否实际可见。如果检查数据集中的最后一项是否可见,则可以发送网络请求以获取更多数据。facebook可能就是这么做的。Quora和Tumblr等其他站点也会这样做,因为当您到达提要的底部时,它通常会重新加载并将新数据添加到数据集中。如果您想要更好的体验,可以将阈值提高到不是最后一个视图,而是在此之前的一些视图,这样就不会像提要停止和重新加载一样。它可以创造无休止的滚动效果。实现取决于您,无论是哪种方式,您都可能需要检查RecyclerView的滚动状态,并明确地调用notifyDataSetChanged(),甚至更好的是调用它的变体。

最后一个问题可能已经被RecyclerView解决了。这取决于您的数据,但是ViewHolders应该以一次内存中没有很多视图的方式循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37897405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档