我有一个惰性列,里面有惰性行,如图所示:
我正在使用 Android 9 的 2017 年中等质量手机上进行测试。发布版本启用了 R8。
行的滚动性能相当不错,但列的滚动性能非常低。我使用的是最简单的可组合项,没什么特别的。
LazyColumn {
items(
items = rows,
key = { it.id },
contentType = { it.type}
) {
LazyRow {
items(videos) {
Video()
}
}
}
}
更新:这就是配置文件 GPU 渲染速度的样子:
更新:这就是探查器系统跟踪的样子。我无法弄清楚是什么导致了如此巨大的滞后:
更新:我使用了一个简单的Text而不是Video,但性能仍然非常差。我创建了一个示例项目。
几个月前我玩它时遇到了同样的问题。我看到一些同事使用 ImmutableList 来存储这些项目,并且运气更好。可能值得一试 - 我遇到的问题是还发生了大量的重组,因此请确保使用分析器可以很好地进行
在我看来,具有 1000x1000 项目的示例项目似乎有点矫枉过正。我建议合并分页作为解决方案。
这是 jetpack compose 中分页的示例:
https://github.com/MrNtlu/JetpackCompose-Pagination
查看官方文档也可能有用:
我也遇到这个问题,最后我用传统视图重写了