非死book Litho:高性能安卓UI的構建框架

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

使用 非死book Litho ,開發人員可以調用聲明式API創建不可變的UI組件。由于組件是不可變的,因此可以另開一個用于準備渲染和布局的線程,然后將組件傳遞給UI線程,實現在屏幕上的實際渲染。Litho使用了代碼生成和針對渲染的組件優化,通過對組件分組降低了安卓ViewGroups的數量,使用更少視圖層級生成更為平面化的界面。據非死book宣稱,這些做法降低了內存的使用,增加了界面的滾動速度。

Litho使用 Yoga 布局組件,該過程可以同步完成,也可以異步完成。Yoga是一個跨平臺的布局引擎,它也是由非死book開源發布的。考慮到組件是不可變的,而創建大量組件的代價很大,因此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已用于多個非死book的安卓應用,例如非死book、非死book Lite、Messenger和Workplace等。 非死book聲稱在界面滾動功能上,Litho比 安卓 RecyclerView 的性能提高了35%。這是通過“將繁重工作轉移到后臺線程,并將渲染工作分布在多個幀中”實現的。此外:

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

 

 

項目主頁:http://www.baiduhome.net/lib/view/home/1493348109684

 

 本文由用戶 460757952 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!