适用于Android上不同孩子的ScrollView与RecyclerView

我有10-15个自定义视图和片段的混合,以垂直列表显示.我不确定RecyclerView在所有视图不同的情况下是否有任何优势. RecyclerView似乎增加了很多样板代码,我认为我唯一的优势就是更容易进入/退出动画.

我的自定义视图/片段也会在创建时调用Web服务.我们不会出于业务原因缓存Web请求.我的理解是RecyclerView会在每个绑定上触发这些Web服务调用,从而导致冗余调用和可见延迟.相比之下,ScrollView应该加载一次视图,并将它们全部保存在内存中,避免多次调用.

我的理解是否正确?在给定的场景中,我需要一些帮助来理解ScrollViews对性能的影响.

解决方法

滚动型

使用ScrollView,无论屏幕上的可见性如何,都将立即创建其所有子视图.如果使用ScrollView作为您的解决方案,您可能希望“监听”其子视图何时可见以更新其内容,最初使用占位符.您还可以构建一些可以在后台线程中获取内容内容.这可能会比你想要的更复杂.

RecyclerView

RecyclerView提供了延迟创建子视图直到它们自动可见的优点,并且可以重复使用具有公共布局的子视图.

通过为每个孩子使用不同的“项目视图类型”,您将禁用RecyclerView的“回收”部分,但仍然可以推迟创建视图,直到它们滚动到视图中.

RecyclerViews提供了一个结构合理的模式,供您通过Adapter和ViewHolders使用.虽然不熟悉它,但RecyclerView还有一个RecyclerView.ViewCacheExtension,旨在让开发人员控制视图的缓存.

总的来说,后期绑定的优势(不创建和加载可能永远不会被查看的视图)以及RecyclerView的灵活性可能会为您带来良好的结果.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...