精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

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

責任編輯:editor005

作者:Abel Avram

2017-04-28 11:53:29

摘自:INFOQ

Facebook開源了Litho。Litho是一種創建安卓應用用戶圖形界面的框架,使用了類似于React的聲明式風格,考慮了界面的滾動性能。

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將復雜視圖分解為多個較小部分,例如文本、圖像和視頻等,然后增量地渲染各部分,并將需完成的工作分布到多個幀中。它還能在回收利用各個小部分,以無限可能的方式重組它們,這降低了在內存中需要創建并存儲的視圖個數。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 阳曲县| 临猗县| 土默特右旗| 武冈市| 凉城县| 五台县| 扬中市| 万安县| 上饶县| 漳州市| 循化| 鹿邑县| 四川省| 同江市| 高州市| 台北市| 霍林郭勒市| 吴堡县| 清水河县| 崇义县| 灵川县| 大理市| 奎屯市| 天祝| 丹寨县| 乳源| 通道| 老河口市| 泸溪县| 偃师市| 尚志市| 天峻县| 蒲江县| 界首市| 米脂县| 滨海县| 龙游县| 合肥市| 亳州市| 象山县| 淮南市|