当前位置: 首页 > 知识库问答 >
问题:

喷气背包撰写懒惰列性能

锺离高丽
2023-03-14

我是jetpack compose的新手,从< code>JetpackCompose基础代码中学习它,所以我在创建一个高性能的懒惰列表中找到了它

注意:LazyColumn不会像RecyclizerView那样回收其子项。当您滚动浏览它时,它会发出新的可组合文件,并且仍然具有高性能,因为与实例化Android视图相比,发出可组合文件相对便宜。

因此,发出新的可组合项是多么的便宜和高效,那么为什么不使用列并一次性组合整个列表,而不是在滚动时不断发出可组合项,即使发出的<code>可组合项

更新:如果可见项目为10,那么在用户滚动之前,从0到9的项目是可见的并且已经渲染,现在用户已经向上滚动并且从5到14的可见项目,是jetpack compose删除了之前渲染的5个项目,如果用户向下滚动,它们将被重新组合或jetpack compose将所有渲染的视图保留在内存中,无论它是否可见

共有1个答案

慕凌
2023-03-14

因为“便宜”的定义有限制,但对列表的大小没有限制。输出100-200个可组合文件可能很便宜(我不相信这一点,但为了讨论起见,让我们这么说)。输出10K并不便宜。由数据库支持的结果列表很容易做到。

因此,您仍然不希望一直输出所有内容。但是输出用户合理滚动到的所有内容可能相对便宜,因为没有人会走到10K列表的末尾。因此,根据常见的用户行为,这是一个合理的妥协。当他们向下滚动时,您会失去性能,但这样做的用户比例足够小,您可能不会在意。

 类似资料:
  • 如何从下方显示惰性列?默认情况下,它显示上面的列表

  • 我有一个包含多个< code>LazyRow的< code>LazyColumn。在旧术语中,嵌套RecyclerView。 我的问题是,当移动到一个新的可组合(不同的选项卡)时,不会恢复滚动状态。但是内部s恢复它们的状态。 例如,打开主屏幕,滚动到底部,然后滚动结束,然后打开不同的选项卡并再次返回主选项卡。 的产品进行评级 如何恢复滚动状态?

  • 以下是 BottomNav 实现的概述。该应用程序正确显示底部导航栏,但当选择某个项目时,它会多次调用NavHost。我看到Jetpack撰写样本 https://github.com/android/compose-samples/tree/main/Jetsnack 一个类似的问题。是否有任何解决方法可以避免多次Navhost调用?

  • 我将我的按钮定义为这样的可组合按钮: 我已经检查了调试器,返回合适的颜色(白色)(0xFFFFFFFF) 但是我不能让按钮上的文字变成白色。 这是预览 设置会导致文本颜色的变化,但我想从按钮颜色设置它,而不是为文本设置一种唯一的颜色 将按钮的文本样式颜色设置为未指定后,它仍然不起作用: 形状是Android Studio项目生成器的默认形状 颜色 主题 排印

  • 目前在Jetpack Compose中,此代码会抛出一个,因为您无法嵌套两个垂直滚动的Composables: 我不希望网格本身滚动,而只是显示我传递到其中的可组合的固定网格。在 中显示非滚动网格是否有任何解决方法?

  • 我刚刚开始使用Jetpack作曲工具包。我添加了和一个设置 作为参数,它工作得非常好。但是每次我添加或更改某些内容时,它本身都不会自动刷新,因此我必须手动执行此操作。