我有10-15个自定义视图和片段的混合,以垂直列表显示.我不确定RecyclerView在所有视图不同的情况下是否有任何优势. RecyclerView似乎增加了很多样板代码,我认为我唯一的优势就是更容易进入/退出动画.
我的自定义视图/片段也会在创建时调用Web服务.我们不会出于业务原因缓存Web请求.我的理解是RecyclerView会在每个绑定上触发这些Web服务调用,从而导致冗余调用和可见延迟.相比之下,ScrollView应该加载一次视图,并将它们全部保存在内存中,避免多次调用.
我的理解是否正确?在给定的场景中,我需要一些帮助来理解ScrollViews对性能的影响.
解决方法
滚动型
使用ScrollView,无论屏幕上的可见性如何,都将立即创建其所有子视图.如果使用ScrollView作为您的解决方案,您可能希望“监听”其子视图何时可见以更新其内容,最初使用占位符.您还可以构建一些可以在后台线程中获取内容的内容.这可能会比你想要的更复杂.
RecyclerView
RecyclerView提供了延迟创建子视图直到它们自动可见的优点,并且可以重复使用具有公共布局的子视图.
通过为每个孩子使用不同的“项目视图类型”,您将禁用RecyclerView的“回收”部分,但仍然可以推迟创建视图,直到它们滚动到视图中.
RecyclerViews提供了一个结构合理的模式,供您通过Adapter和ViewHolders使用.虽然不熟悉它,但RecyclerView还有一个RecyclerView.ViewCacheExtension,旨在让开发人员控制视图的缓存.
总的来说,后期绑定的优势(不创建和加载可能永远不会被查看的视图)以及RecyclerView的灵活性可能会为您带来良好的结果.