【发布时间】:2017-07-31 17:20:23
【问题描述】:
我知道这是一个坏主意,但我在另一个 RecyclerView 的项目中使用 RecyclerView 来显示包含列表的项目列表。
我设法让它工作并尽可能地对其进行了调整,但是当具有更多项目的列表开始显示并在屏幕上绘制时,我仍然会得到那些 green 尖峰。
这些尖峰在翻阅物品时会产生明显的延迟,并且在使用比三星 Galaxy S6 更慢和更旧的东西时更加明显。
我做了一些日志记录,似乎outer ViewHolders 正在被回收,而inner RecyclerView 的适配器只创建了 5 次,所以一定是绘制时间扼杀了性能。
通过设置 RecycledViewPool 中的 ViewHolder 的最大数量,我设法限制了新 inner RecyclerView 的 ViewHolders 的创建,但这仅起到了一点作用。
我知道内部 RecyclerView 没有“底部”,它可以依靠它来计算何时显示新项目,因此它必须立即绘制每个项目,这可能是不应该使用的主要原因这个设置。 (当我写下这个问题时,我才恍然大悟。谢谢世界上的橡皮鸭)。
有没有一种方法可以进一步调整,或者您能否建议如何在另一个 RecyclerView 的项目中使用除 RecyclerView 之外的其他设置来完成这项工作?
如果需要,我会提供更多信息。
谢谢
【问题讨论】:
-
你想达到什么目的?
-
在向提问者提出任何建议之前,请不要在此处对问题投反对票。
-
试图了解下一步该做什么,以使此设置顺利进行,在进行时不会出现滞后或丢帧
-
我的意思是,你为什么要尝试嵌套垂直滚动列表?
-
嵌套的 reyclerview 也在 google io 2016 app twitter.com/crafty/status/799344328304783360
标签: android optimization android-recyclerview nestedrecyclerview