50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

得物自研API网关实践之路

得物技术

微服务架构

前端开发CSS实用的技巧有哪些

小魏写代码

概念回顾:分布式拒绝服务 (DDoS) 攻击

NGINX开源社区

nginx DDoS DDoS 攻击 (SSL)/TLS Web 应用防火墙

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现

码界西柚

后端 消息队列 高并发架构 亿级数据 2024年第三十四篇文章

一致性哈希算法

乐只

一致性Hash算法 分布式协议

2023年行摄回忆录

穿过生命散发芬芳

行摄回忆录 盘点2023

【幻兽帕鲁】专用服务器攻略来啦!一键部署,5s开服

华为云开发者联盟

云计算 服务器 华为云 华为云开发者联盟 幻兽帕鲁

云图说|揭秘云原生服务生命周期治理平台,云原生服务中心OSC

华为云开发者联盟

云原生 华为云 华为云开发者联盟 华为云云图说

华为微信红包封面新春献礼,龙年送福更添彩

最新动态

小艺上线新春限定版!丰富玩法一起“花式”迎龙年

最新动态

低代码流程引擎在数字设计平台的应用:简化创作流程,提升生产效率

不在线第一只蜗牛

低代码 数字化 流程引擎

今年春节百度网盘把AI玩透了:龙年艺术写真、宠物表情包、定制祝福语

彭飞

PS插件-模拟真实投影拖尾阴影工具 Shadowify v1.0.1

Rose

AE脚本-真实三维立体文字标题排版空间翻转组合动画 TypeMonkey3D

Rose

别人还在集五福,星河社区开发者已经奖品拿到手软了!

飞桨PaddlePaddle

百度 百度飞桨 飞桨星河社区

AI创业创新的三个误区及应对之道

算AI

人工智能 创业 AI 创新

关键帧缓入缓出曲线调节控制操作AE脚本 Kease for mac

Rose

AE脚本-智能快速图层对齐工具 Align Pro

Rose

Databend 开源周报第 131 期

Databend

Primevue项目中使用qiankun

麦兜

聊聊BUG的根因分析

老张

bug bug管理

前端开发CSS实用的技巧有哪些

小齐写代码

Java 数学运算与条件语句全解析

小万哥

Java 程序人生 编程语言 软件工程 后端开发

水杉在极狐GitLab 的 DevOps 实践

极狐GitLab

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