产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

Dash for Mac(好用的API文档工具)v7.3.2激活版

Rose

云起无垠入围“2024第五届“科创中国”科技创新创效大赛总决赛TOP10企业榜单”

云起无垠

探究亚马逊详情API接口:开发与应用

科普小能手

API API 接口 亚马逊API 亚马逊商品详情API 亚马逊API接口

一文解读GaussDB(DWS)监控运维诊断优化能力

华为云开发者联盟

sql 数据仓库 GaussDB

Compressor for Mac:满足专业需求的强大文件压缩工具

Rose

【教程】第七章:工作流——自动赋能,效率飞跃

NocoBase

开源 工作流 低代码 教程 无代码

乘风破浪的“厂二代”|《你好!厂长》第八期全国首映,见证​逆风翻盘的精彩人生

科技热闻

一文读懂计算机视觉「目标检测」的基本原理和主流模型

Zilliz

人工智能 计算机视觉 目标检测

量子计算与人工智能的交汇:科技未来的新引擎

天津汇柏科技有限公司

人工智能 量子计算

如何区分产品研发管理和研发项目管理?实用指南

易成研发中心

项目管理 产品研发 产品研发管理

小公司如何做好项目管理工作?管理者的实战经验

易成研发中心

项目管理 程序员 项目软件管理

电子电器组装行业MES系统解决方案

万界星空科技

mes 万界星空科技mes 电子mes 电子行业 电子电器行业

MES信息系统建设整体方案,MES技术方案书,需求规格说明书(Word原件完整版)

金陵老街

解决方案 系统源码

PowerPhotos for Mac(mac专用图片管理工具)v2.6.4直装版

Rose

易于使用的 PDF 编辑器和注释器 PDF Expert for Mac

Rose

荣誉|奇点云入选首批“百舸企业”名单

奇点云

Go Web服务中如何优雅平滑重启?

左诗右码

iMovie 剪辑 for Mac(专业视频剪辑工具)v10.4.3中文版

Rose

Logic Pro X 11 mac苹果版音乐创作软件

Rose

超越传统截图,TechSmith Snagit 的高级功能让你眼前一亮!

Rose

百度智能云 VectorDB 优势项目数量并列 TOP 1

Baidu AICLOUD

Milvus Zilliz 向量数据库 VDB

利用人工智能 ChatGPT 提升测试开发能力:通往高效之路

测试人

软件测试

淘宝商品详情API:如何通过商品ID获取全面信息

代码忍者

API 接口 pinduoduo API

充电桩管理平台(源码+文档+部署+讲解)

深圳亥时科技

「混合专家模型」可视化指南:A Visual Guide to MoE

Baihai IDP

程序员 AI LLMs MoE 混合专家模型

Final Cut Pro for Mac(fcp专业视频后期制作软件中文版)

Mac相关知识分享

Linux 文件处理命令:掌握文件管理的利器

测试人

软件测试

探索DDCA:深入理解内存架构、子系统与内存控制器

代码忍者

电脑重装系统后硬盘数据可以恢复吗?系统重装后以前的文件怎么找回来?

阿拉灯神丁

EasyRecovery 数据恢复软件 电脑 备份 & 恢复 系统还原

房主、设计师都爱的 Live Home 3D Pro,家居设计不再犯难!

Rose

Downie 4 for Mac(网站在线视频下载工具)

Mac相关知识分享

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