写点什么

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

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

关注

评论

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

AI见证每一跳的闪耀!百度成为中国国家跳水队人工智能合作伙伴

飞桨PaddlePaddle

人工智能 百度

东莞理工网安学院“火焰杯”软件测试高校就业选拔赛颁奖典礼

测试人

软件测试

应对全球性挑战的AI解决方案

测吧(北京)科技有限公司

测试

人工智能的潜在益处与风险

测吧(北京)科技有限公司

测试

HarmonyOS音频开发指导:使用AudioRenderer开发音频播放功能

HarmonyOS开发者

HarmonyOS

大模型训练,提升AI能力的关键

百度开发者中心

深度学习 大模型

优测云测试平台 | 有效的单元测试

优测云服务平台

测试 单元测试 云平台 测试开发

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

华为云开发者联盟

人工智能 华为云 大模型 昇腾CANN 华为云开发者联盟

人工智能对教育和职业的双重冲击

测吧(北京)科技有限公司

测试

培养AI领域的未来人才

测吧(北京)科技有限公司

测试

LLM盛行下,如何高效训练大模型

百度开发者中心

大模型训练 LLM LLMOps

软件测试|华新学院在2022 年全国大学生“火焰杯”软件测试高校就业选拔赛取得佳绩

霍格沃兹测试开发学社

天下苦定制久矣,平台化建设到底难在哪里?

权说安全

零信任 统一门户

10.26 来 CNCC 2023 T16 展位,TDengine 精美周边等你来领!

TDengine

时序数据库 ​TDengine

用HarmonyOS做一个可以手势控制的电子相册应用(ArkTS)

HarmonyOS开发者

HarmonyOS

AI监管与政策:塑造人工智能未来

测吧(北京)科技有限公司

测试

大模型训练,提升AI能力的关键

百度开发者中心

大模型训练 LLM

人工智能改变日常生活和工作的未来

测吧(北京)科技有限公司

测试

加速深度学习创新的引擎

百度开发者中心

大模型 LLM LLMOps

初探亚马逊 AI 编程助手 CodeWhisperer

亚马逊云科技 (Amazon Web Services)

人工智能’ 云上探索实验室 Amazon CodeWhisperer

大模型的幻觉 (Hallucination) 因何而来?如何解决幻觉问题?

Baihai IDP

人工智能 AI 大模型 白海科技 大模型幻觉

AI在创新和竞争力中的关键

测吧(北京)科技有限公司

测试

AI与就业:面对未来的失业风险

测吧(北京)科技有限公司

测试

文韬武略,创新无界,华为云1024程序员节精彩抢先看

华为云开发者联盟

程序员 开发者 华为云 华为云开发者联盟 华为云1024程序员节

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