编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过!
英文原文:Components for Android: A declarative framework for efficient UIs 。
滚动界面是移动端最常见的模式了。如果你做过app,那么你很可能使用过RecyclerView来实现滚动列表。
在安卓上建立列表界面是相当简单的:只需创建item的布局,把它挂载到RecyclerView 的adapter上就完成了。虽然大多数app要比这稍微复杂点。
如果你要为列表添加无限滚动,你就需要考虑内存使用的问题了。如果你adapter的 view type比较多,你需要考虑如何高效的回收视图。如果列表的item很复杂,你还很可能需要优化布局以避免滚动时丢帧。
在Facebook,我们要处理RecyclerView在各种信息流中的极端使用情况。拿新闻信息流来说,它的item非常复杂,有各种各样的内容包括分享,富文本,视频,广告,图片等等。而且每天都有许多来自不同产品团队的安卓工程师在做新闻信息流的工作。
这就带来了一些有趣的技术挑战。如何才能在内容如此复杂,团队合作人数如此众多的情况下做到让RecyclerView具有流畅的滚动性能呢?如何才能在一个内容变化近乎无限的信息流中提供一个高效的内存回收模式呢?
在这种规模之下,依靠一个团队为自己的产品提出一次性的解决方案是不可持续的。我们需要一个封装了实现这些信息流复杂度的可扩展的公共架构,这样产品团队就能专注于为社区输出惊叹的功能。
我们从React和ComponentKit得到灵感创建了一个强大的框架。它可以让安卓开发者只需通过一个简单的声明式API就能实现复杂且高性能的RecyclerView。我们把它叫做Components for Android (C4A)。