【问题标题】:Android How many items can a list fit while scrolling with RecyclerViewAndroid 使用 RecyclerView 滚动时列表可以容纳多少个项目
【发布时间】:2019-02-13 21:05:01
【问题描述】:

我有一个简单的 recyclerView。滚动时,将从房间数据库中获取项目并添加到回收者的列表中。

我想知道在抛出 OOM 之前可以添加多少项?

有什么办法可以控制吗? 示例:在 instagram 的搜索部分中,您不能永远向下滚动,对吧?

【问题讨论】:

  • 它将永远添加行,直到达到 ArrayList 的限制:) 请阅读回收站视图的概念。
  • @PankajKumar 我什么时候会达到 ArrayList 的极限?滚动一段时间后,OOM是不可避免的?
  • 没有。在这种情况下,您也不会遇到 OOM 问题,因为 RecyclerView 会重用您永远不会遇到此问题的单元格。但是您的其他逻辑可能会导致OOM,我认为您知道这些事情。

标签: java android listview android-recyclerview


【解决方案1】:

RecyclerView 创建有限数量的视图,然后用您的数据填充它们。因此,在出现诸如达到Integer MAX_VALUE(因为包含列表位置)等问题之前,显示项目没有限制...

【讨论】:

  • 不相关的答案。我正在询问 RecyclerView 中的 ArrayList。
  • 由于 ArrayList 数据结构中有一个数组,并且数组的定位是通过整数值(最多约 20 亿)完成的,因此 ArrayList 的大小以及随后使用 ArrayList 的 RecyclerView 存在限制。但是,没有移动设备的内存支持大约 20 亿个数据对象在 RecyclerView 中显示。
  • 所以如果我滚动很长时间,app会抛出OOM吗?还是我能以某种方式处理这个问题?
  • 通过分页,您可以处理大型列表加载。因此,内存中同时存在的项目数量有限。看developer.android.com/topic/libraries/architecture/paging。我认为这很有帮助。
  • 是的,我知道,但如果我在分页的情况下继续滚动,我会在某个时候接近数组的极限。
猜你喜欢
  • 2011-02-10
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多