我混合了 10-15 个自定义 View 和 fragment 以显示在垂直列表中。我不确定 RecyclerView 在所有 View 都不相似的场景中是否有任何优势。 RecyclerView 似乎添加了很多样板代码,我认为我可以获得的唯一优势是更容易进入/退出动画。
我的自定义 View /fragment 也会在创建时调用网络服务。出于商业原因,我们不会缓存网络请求。我的理解是 RecyclerView 会在每次绑定(bind)时触发这些 Web 服务调用,从而导致冗余调用和可见的延迟。相比之下,ScrollView 应该加载一次 View ,并将它们全部保存在内存中,避免多次调用。
我的理解正确吗?在给定的场景中,我需要一些帮助来理解 ScrollViews 的性能影响。
最佳答案
ScrollView
对于 ScrollView
,它的所有 subview 都将同时创建,而不管屏幕上的可见性。如果将 ScrollView 用于您的解决方案,您可能希望“监听”其 subview 何时变得可见以更新其内容,最初使用占位符。您还可以构建一些可以在后台线程中获取内容的东西。这可能会很快变得比您想要的更复杂。
回收 View
RecyclerView
的优点是可以延迟 subview 的创建,直到它们自动可见,并且可以通过通用布局重用 subview 。
通过为您的每个 child 使用不同的“项目 View 类型”,您将禁用 RecyclerView 的“回收”部分,但仍然可以获得推迟 View 创建直到它们滚动到 View 中的好处。
RecyclerViews 确实提供了一个相当结构化的模式,供您通过 Adapter 和 ViewHolders 使用。虽然个人并不熟悉,但 RecyclerView 也有一个 RecyclerView.ViewCacheExtension
,旨在让开发人员控制 View 的缓存。
总的来说,后期绑定(bind)的优势(不要创建和加载可能永远不会被查看的 View )和 RecyclerView 的灵 active 可能会为您带来不错的结果。
关于android - ScrollView vs RecyclerView 适用于 Android 上的不同 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083484/