喷气背包组合中的重新部署与旧ui中的回收



LazyColumnLatzyRow正在替换旧UI中的RecyclerView,但当在RecyclerView中滚动项目并返回时,该项目将消失,然后循环到优化UI。

LazyColumn和LazyRow在做同样的事情?

我从Jetpack Compose基础代码实验室中找到了它

注意:LazyColumn不会像RecyclerView那样回收其子项。它当你滚动并静止时,会发出新的堆肥性能,因为与实例化Android视图

经过测试,我发现LazyColumn只是组成可见项。并且,通过滚动不可见的项目将在其再次可见时重新组合。

LazyColumn使用LazyList,后者使用LazyLayout,并使用SubComposeLayout在需要时重新组合可组合的子项,而不是使用Modifier.verticalScroll()的Column来组合其所有子项。

Subcomposable有一个子组合函数,可以调用多个布局块中的时间。例如,这就是LazyRow。slotId允许SubcomposeLayout跟踪和管理通过调用subcose创建的合成。例如,如果您使用的索引从您可能想要的数组生成内容数组作为其slotId,允许SubcomposeLayout确定上次生成的子组件应在重新组合时使用。此外,如果不再使用slotid,SubcomposeLayout将处理其相应的组成。

你可以在这里阅读谷歌开发者关于SubcomposeLayout的完整答案。

最新更新