Jetpack compose - 将所有物品放入 LazyColumn 是个好主意吗?

Posted

技术标签:

【中文标题】Jetpack compose - 将所有物品放入 LazyColumn 是个好主意吗?【英文标题】:Jetpack compose - is it good idea to throw all items in to LazyColumn? 【发布时间】:2021-10-27 14:06:18 【问题描述】:

目前,我有一个屏幕

LinearLayout 作为根

浏览器 文本视图 带有 textview 项的 Recyclerview 其他一些布局

在这种情况下,从性能方面迁移到作曲时,哪个是更好的选择?

一个

列作为根

ViewpagerComposable() TextComposable() LazyColumn items(list) TextComposable(it) 其他一些可组合的

B

LazyColumn 作为根

item ViewpagerComposable() 项目 TextComposable() items(list) TextComposable(it) item 其他一些可组合的

【问题讨论】:

这取决于您的列表有多大。 Lists @Yeldar.N 无论哪种方式我都会得到相同的列表 【参考方案1】:

关于性能,您会看到惰性项目在离开组合后立即被销毁(从屏幕上滑出)。因此,如果您的项目需要进行一些加载,例如从 Web 获取一些数据或显示从内部资产加载的图像,则所有这些获取都将在重新输入时重新执行。虽然会自动进行缓存,因此您不必担心会重新执行繁重的操作,但即使是从缓存中提取也会发生。所以如果不需要让内容可滚动,如果是的话,内容又不是太多,用Column来代替是可行的。 LazyColumn 只是 RecyclerView 的快速替代品。在您的普通 android 应用程序中,您不会使用 RecyclerView 来处理这些东西吗?只需使用相同的概念,因为它提供与 Recyclerview 相同的性能。

简短回答:没有太大区别;性能影响(如果有的话)将可以忽略不计。在这种情况下,我可能会选择 Column,但这完全取决于您的方便。

【讨论】:

以上是关于Jetpack compose - 将所有物品放入 LazyColumn 是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose中的Modifier

如何在运行时添加 texdfields 并在 android jetpack compose 中管理这些文本字段值?

Android Jetpack Compose——一个简单的微信界面

jetpack compose 接收返回参数

Jetpack Compose - animateXxxAsState

Jetpack Compose 中的作用域状态