Android 最高效的列表容器

Aou*_*hid 0 java android android-layout

PS 我是 Android 开发新手,所以希望能多考虑一下。

我的测试应用程序包含一个自定义视图,如下所示:

在此输入图像描述

我不会包含此视图的 XML 代码,因为它会使帖子变得不必要的大

这个自定义视图有一个LinearLayout作为根元素。其中LinearLayout还有 2 个嵌套的LinearLayouts. 尽管一RelativeLayout开始看起来 s 可以使用,但在尝试了所有容器之后,只有 sLinearLayout可以实现这种外观。

问题是我需要动态填充自定义视图的列表(上面的列表)。它的范围可以是 40-80。我尝试在我的测试环境中动态生成 60 个上述自定义视图作为 aRecycleView内部的子视图ScrollView

在我的测试环境中,在我的物理设备(三星 Galaxy J2)上,我可以看到应用程序的性能有所下降,但下降幅度不大。尽管如此,我仍然可以看到该应用程序使用了过多的设备内存。

我已经阅读了很多关于布局性能的帖子。从文档中我发现使用太多嵌套LinearLayout可能会产生深层且复杂的视图层次结构。因此,我尝试尽可能FrameLayout使用。RelativeLayout

我的情况实际上并不独特。如果您是正在阅读本文的开发人员,并且具有开发一些大型应用程序的经验,那么您肯定会遇到需要多次动态生成自定义视图的情况。那么,这里的建议是什么?在 Facebook 甚至 Facebook Lite 等应用程序中,或者其他具有批量填充的类似自定义视图的应用程序中,它们实际上使用哪些布局来确保最佳性能?鉴于我的情况,我的方法正确吗?

Ved*_*agh 5

每当您使用 时RecyclerView,它只会创建足以填充设备的屏幕/视口的视图。其他所有视图都只是“回收”,这意味着视图将被一次又一次地重用,但仅限于新数据。

您可能遇到的延迟是ScrollView由于RecyclerView. 除非您使用大量图像而不使用 Glide/Picasso 进行图像加载,否则您的 RecyclerView 不应滞后。