写点什么

Facebook Litho:高性能安卓 UI 的构建框架

  • 2017-04-27
  • 本文字数:1049 字

    阅读完需:约 3 分钟

Facebook 开源了 Litho 。Litho 是一种创建安卓应用用户图形界面的框架,使用了类似于 React 的声明式风格,考虑了界面的滚动性能。

使用 Facebook Litho ,开发人员可以调用声明式 API 创建不可变的 UI 组件。由于组件是不可变的,因此可以另开一个用于准备渲染和布局的线程,然后将组件传递给 UI 线程,实现在屏幕上的实际渲染。Litho 使用了代码生成和针对渲染的组件优化,通过对组件分组降低了安卓 ViewGroups 的数量,使用更少视图层级生成更为平面化的界面。据 Facebook 宣称,这些做法降低了内存的使用,增加了界面的滚动速度。

Litho 使用 Yoga 布局组件,该过程可以同步完成,也可以异步完成。Yoga 是一个跨平台的布局引擎,它也是由 Facebook 开源发布的。考虑到组件是不可变的,而创建大量组件的代价很大,因此 Litho 允许一个组件被当前视图弃用后,可在其它视图中重用。

使用 Litho 定义一个“Hello, World!”文本组件的代码如下:

复制代码
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ComponentContext c = new ComponentContext(this);
final LithoView lithoView = LithoView.create(
this /* 上下文 */,
Text.create(c)
.text("Hello, World!")
.textSizeDip(50)
.build());
setContentView(lithoView);
}
}

LithoView 相当于安卓的 ViewGroup,实现 Litho 定义组件与安卓 View 间的关联。Text 是一个 Litho 提供的小部件,具有 text、textColor、textSize、textStyle 等一系列属性。

Litho API 相当庞大,其中包含多个软件包,具有超过 300 个 Java 类和接口。Litho 支持用户化布局、单元测试、事件处理、RTL(right-to-left)文本、可访问性等多种功能。

Litho 已用于多个 Facebook 的安卓应用,例如 Facebook、Facebook Lite、Messenger 和 Workplace 等。 Facebook 声称在界面滚动功能上,Litho 比安卓 RecyclerView 的性能提高了 35%。这是通过“将繁重工作转移到后台线程,并将渲染工作分布在多个帧中”实现的。此外:

Litho 将复杂视图分解为多个较小部分,例如文本、图像和视频等,然后增量地渲染各部分,并将需完成的工作分布到多个帧中。它还能在回收利用各个小部分,以无限可能的方式重组它们,这降低了在内存中需要创建并存储的视图个数。

该框架已发布在GitHub 上。如需了解更多细节,可参考指南文档

查看英文原文: Facebook Litho: An Android UI Framework Created for Performance

2017-04-27 19:005426
用户头像

发布了 227 篇内容, 共 83.3 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

智慧平安社区建设解决方案,社区平安建设

13530558032

三分钟扫盲:进程与线程基础必知

飞天小牛肉

Java 面试 后端 操作系统 2月春节不断更

一次搞明白 Docker 容器资源限制

Java架构师迁哥

数据应用二

raox

1353道,阿里+腾讯+字节+滴滴+美团java面试题及答案(2021版)

Java架构师迁哥

一个无名之辈与罗永浩的故事

ES_her0

28天写作

2021Java面试必备!啃透这份Java10W字面经,你还用担心被面试官“吊打”?

程序员 架构 面试

955,远程办公,这家公司就在厦门/杭州

夏兮。

远程办公 955 海景 福利好

2021全网最全总结美团/阿里/百度等大厂面试真题

比伯

Java 编程 架构 面试 程序人生

架构设计篇之微服务实战笔记(二)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

阿里+腾讯+字节+滴滴+美团java面试题及答案(2021版)1353道题全部开源

Java架构追梦

Java 面试 架构师 金三银四

区块链+数字版权-区块链存证解决方案

13530558032

人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式

刘悦的技术博客

Python 递归 逆向思维 推理 尾递归

数据应用一

raox

五分钟扫盲:进程与线程基础必知

架构 线程’

关于链表的一二三事

阿零

学习 链表 数据结构与算法

科普篇:交智商税的商品

石云升

28天写作 2月春节不断更 智商税

架构13周

FreeOcean

日记 2021年2月21日(周日)

Changing Lin

2月春节不断更

个人职业规划和定位

张老蔫

28天写作

2021 - iOS金三银四最新面试技能方向分享

iOSer

ios 面试 技术技能树 程序猿 金三银四

山东“互联网+”,组织部智慧党建解决方案

源中瑞-龙先生

深入了解红黑树

跳蚤

膜拜!首次公布Java10W字面经,Github访问量破百万

996小迁

Java 编程 程序员 架构 面试

入职没见过P8领导,3月后他带着份769页虚拟机笔记出关了

Java架构之路

Java 程序员 架构 面试 编程语言

关于事件溯源

架构精进之路

28天写作 事件溯源

DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图

跳蚤

使用动词的力量

将军-技术演讲力教练

一经推出就惨遭GitHub哄抢!什么SQL优化笔记如此出众?

Java架构之路

Java 程序员 架构 面试 语言

Alibaba面试:Java三面凉凉!输在了:微服务,Redis,JVM

Java架构之路

Java 程序员 架构 面试 编程语言

全网最详细的负载均衡原理图解

鞋子特大号

Linux 负载均衡 系统开发

Facebook Litho:高性能安卓UI的构建框架_Java_Abel Avram_InfoQ精选文章