Android:在非常慢的RecyclerView中处理大数据列表



我是Android开发的新手,想在视图中显示一个列表(row = image + text + button)。

该列表将包含1000多个项目。目前我正在使用RecyclerView,但它需要相当长的时间来加载信息。

添加日志后,我发现数据获取(1000项)大约需要1000ms,这完全没问题,而首先显示列表又需要5000ms。列表显示后,上下滚动时非常平滑。

我的理解是RecyclerView将自动处理每行的视图创建,这样

  1. RecyclerView将只渲染当前屏幕的几个项目,任何低于或需要向下滚动的内容将在运行时渲染
  2. RecyclerView将尽可能多地呈现

如果1)是正确的,那么是否有机会进行优化?如果2)是正确的,这意味着我需要找到一种聪明的方法来优化,比如分页?

由于我是Android开发的新手,所以我不确定要深入研究的方向。

  1. 我是否应该在UI上使用分页:获取1000个项目并存储在一个列表中,然后每次加载10个项目,当滚动到最底部时,加载另外10个项目,直到最后?
  2. 我是否应该在数据获取上使用分页:获取10个项目并呈现10行,当滚动到底部时,获取另外10个项目并呈现新的10行,直到结束?

哪一个是正确的?

  1. 另外,当向下滚动时,前10项如何持续存在?我需要手动处理上下滚动吗?

很抱歉我问了这么多新手问题,但我希望我能把这个问题说清楚。

即使循环视图动态生成视图,你也不应该直接对循环视图操作大量数据。

考虑使用Android的分页库。https://developer.android.com/topic/libraries/architecture/paging

,而首先显示列表又需要5000ms。后列表显示,当上下滚动时,它非常平滑。

基于此,我建议您首先查看您可能执行的任何数据操作(如果有的话),因为问题可能不是首先出现在recyclerView

如果你要优化recyclerview,确实有一种技术可以对recyclerview

使用分页
  • 如果你想使用jetpack库,你可以尝试分页
  • 如果你想了解技术和使用香草实现,这是一个很好的开始链接:https://github.com/codepath/android_guides/wiki/Endless-Scrolling-with-AdapterViews-and-RecyclerView
  • 最后,如果您在向recyclerView通知数据更改时面临性能问题,请阅读有关diffutil

相关内容

  • 没有找到相关文章

最新更新