飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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:005132
用户头像

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

关注

评论

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

Bytebase 体验官之 MySQL 「SQL 审核」

朱亚光

商业堡垒机是什么意思?有免费版的商业堡垒机吗?

行云管家

网络安全 堡垒机 运维审计

阿里p8强烈推荐这部《从零开始学架构》堪称GitHub最强!

Java你猿哥

Java 架构 ssm 架构设计

率失真函数的性质

timerring

信息论与编码

企业上云,华为云桌面兼顾效率与安全

平平无奇爱好科技

NPM 实用命令与快捷方式

SEAL安全

JavaScript npm 企业号 4 月 PK 榜

七大关键技术,华为云数据库GaussD承载金融级核心系统

平平无奇爱好科技

云计算,

共享电单车生产厂家如何选择

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车厂商 本铯智能共享电动车商家

华为云大数据BI解决方案,助力企业数字化运营

轶天下事

企业数据的最后防线——华为云数据灾备

YG科技

云计算,

数据灾备方案,华为云为何受众多企业信赖与选择?

平平无奇爱好科技

已献出膝盖!GitHub上的宝藏级SpringBoot核心宝典,讲得太清晰了

做梦都在改BUG

Java 架构 微服务 Spring Boot 框架

华为云大数据BI方案为房地产行业数字化发展赋能

轶天下事

云计算,

华为云OBS,助力企业海量、安全、高可靠、低成本数据存储

轶天下事

云计算,

Tars-Cpp 协程实现分析

vivo互联网技术

协程 TARS

Guava的EventBus事件机制实现

Java你猿哥

Java 源码 ssm Guava EventBus

ES的索引结构与算法解析

京东科技开发者

搜索引擎 elasticsearch 索引结构 ES 企业号 4 月 PK 榜

中国信通院“OSCAR开源生态建设沙龙”成功召开

中国IDC圈

开源

从原理聊JVM(二):从串行收集器到分区收集开创者G1

京东科技开发者

G1 JVM 垃圾回收器 java 企业号 4 月 PK 榜

中国浙江|浙江省级人才计划申报指南来了!

科兴未来News

双创比赛

4月26日-30日,KaiwuDB 在数字中国等你!

KaiwuDB

数字中国 KaiwuDB

AI降临,前端启用面壁计划

京东科技开发者

人工智能 AI 前端 企业号 4 月 PK 榜

Spring循环依赖为何使用三级缓存?

Java你猿哥

Java spring 缓存 bean spring ioc

GitHub排名第一《lntellij IDEA软件开发与应用实战手册》限时开源

Java你猿哥

Java spring ssm IDEA

阿里开发实录:慢SQL拖垮数据库并引发故障

Java永远的神

数据库 sql 程序员 后端 架构师

简直人生外挂,直接涨薪25K,跪谢这份Java性能调优实战宝典

做梦都在改BUG

Java 性能优化 JVM 性能调优

阿里云机器学习PAI发布基于HLO的全自动分布式系统 TePDist,并宣布开源!

阿里云大数据AI技术

深度学习 分布式系统 开源项目 企业号 4 月 PK 榜

【堡垒机】免费堡垒机介绍以及下载看这里!

行云管家

堡垒机 运维审计 免费 小微企业

如何用DataTester设计并创建可视化实验

字节跳动数据平台

AB testing实战 A/B测试 企业号 4 月 PK 榜

掌握动态规划,从“什么问题适合用”及“解题思路”入手

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 4 月 PK 榜

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