我有3个问题
当我们调用recyclelerview.setadapter(new Adapter)时,它对android的内存有多大影响;代替 notifydatasetchanged();
在Android上使用Facebook应用程序时我很明显,如果我们向下滚动一整天,facebook的新闻提要将不会结束。 但是facebook deosn并没有立即加载所有的新闻。它 当我们向下滚动时,一点一点地加载。所以我的问题是,我有 制作了一个应用程序,我在其中加载用户在我的问题 recyclerview。但随着时间的推移,问题的数量仍然存在 增加,我仍然会立即显示所有问题 设备和应用程序的内存收费开始崩溃所以我如何 加载一些问题,用户向下滚动。我只是加载下一个问题 喜欢facebook?
- 醇>
与第二个问题类似。我如何只加载我在屏幕上显示的问题,一次只能在内存中显示?
P.S我不包括代码,因为我认为没有必要,因为我没有做任何与普通回收者视图不同的事情
答案 0 :(得分:1)
在RecyclerView
中设置新适配器与仅调用notifyDataSetChanged()
之间的区别很大,因为当您调用set new Adapter时,应用必须重新创建其所有视图持有者并绑定需要一遍又一遍。 RecyclerView可能就是这样做的,并且做agian工作是不必要的和任务。特别是如果每次收到新数据时调用它,这对你的Android应用程序来说将是很多工作。 RecyclerView
的美丽在于它的名字。它通过在视图滚动屏幕时重复使用(或回收)视图来减少应用程序的重载量。即使你有10000个复杂的视图,由于RecyclerView
的实现,应用程序仍然可以很好地工作。所有观点永远不会记忆长久。
对于第二个问题,您可以查看RecyclerView
中的位置是否实际可见。如果您检查数据集中的最后一项是否可见,则可以发送网络请求以获取更多数据。 facebook可能会这样做。 Quora和Tumblr等其他网站也会这样做,因为当您到达Feed的底部时,它通常会重新加载并将新数据添加到数据集中。如果您想获得更好的体验,可以将阈值提升到最后一个视图,但在此之前有一些视图,因此看起来好像Feed停止并重新加载。它可以创建无尽的滚动效果。实现取决于您,无论哪种方式,您可能必须检查RecyclerView
的滚动状态,并且肯定会调用notifyDataSetChanged()
,或者更好地调用它的变体。
最后一个问题可能已由RecyclerView
处理。这取决于您的数据,但ViewHolders
应该以一种内存中没有很多视图的方式进行回收。