Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android MVVM框架RoboBinding初探

Android MVVM框架RoboBinding初探

編輯:關於Android編程

今年在HTML5開發中使用AngularJS框架,覺得MVVM的框架太方便了,雙向綁定機制省去了很多繁瑣的工作,於是想在新的Android項目也引入類似的MVVM框架,提高團隊的開發效率和代碼的工程化程度,然後就找到了RoboBinding這個框架,簡單看了下感覺應該還算靠譜。

RoboBinding是一個實現了數據綁定 Presentation Model(MVVM) 模式的Android開源框架。MVVM模式是MVC模式的重要更新,使得項目結構更加的優美,易於維護以及方便於測試。這也是為什麼幾個主流的語言都有相應的MVVM框架實現如Microsfot WPF, Silverlight,JavaFX以及Flex。

在沒有性能損失的前提下(使用AspectJ字節碼生成來替代Java反射),RoboBinding 幫助你編寫更可讀,易於測試與維護的UI代碼。框架具備以下優點:

  • 通過綁定移除 - 大量不必要的代碼(如addXXListener(),findViewById()等) 。

  • 將 - 難於測試的Android代碼以及運行過久且不切實際的Android單元測試 - 變為 pojo PresentationModels 及其普通的JUnit單元測試。

  • 提供對象類型Cursor來替換 - 關系類型Cursor,因為我們已經習慣於操作對象 。

  • 可以很容易的為任何自定義組件,第三方組件或Android widget編寫屬性綁定實現,簡化代碼,使項目易於維護。


    從簡單的角度看,他移除了如addXXListener(),findViewById()這些不必要的代碼,連如BufferKnife那樣的InjectView都不需要,因為你的代碼一般不需要依賴於這些界面組件信息。下面以一個最簡單的AndroidMVVM為例。

    Layout:

    ? 1 2 3 4 5 6 7 8 9 10 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:bind="http://robobinding.org/android"> <TextView bind:text="{hello}" /> ... <Button android:text="Say Hello" bind:onClick="sayHello"/> LinearLayout>

    Presentation Model:

    ? 1 2 3 4 5 6 7 8 9 10 public class PresentationModel extends AbstractPresentationModel { private String name; public String getHello() { return name + ": hello Android MVVM(Presentation Model)!"; } ... public void sayHello() { firePropertyChange("hello"); } }

    Activity將layout與對應的presentation model綁定在一起。

    ? 1 2 3 4 5 6 7 8 9 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { ... PresentationModel presentationModel = new PresentationModel(); View rootView = Binders.inflateAndBindWithoutPreInitializingViews(this, R.layout.activity_main, presentationModel); setContentView(rootView); } }

    這樣layout的{hello}與PresentationModel.hello綁定,layout的sayHello與PresenationModel.sayHello方法綁定。我們不需要在Layout中定義TextView, Button的Id因為我們不關心,且沒有必要。當我們進一步觀察時,我們發現PresentationModel是一個Pure POJO。這也是為什麼軟件界的泰斗Martin Fowler在2004年,提出了Presenation Model(MVVM) 模式。它是我們所熟悉的MVC的升級,進一步的把界面狀態與邏輯解藕到Presentation Model中。我們可以通過以下幾個示例項目學習RoboBinding使用,他們都可以直接導入Android Studio無需額外配置:

    1.AndroidMVVM,最小的RoboBinding使用例子。

    2.Album Sample,是Martin Fowler的Presentation Model模式原始例子基於RoboBinding的Android翻譯版本。

    3.Gallery,是用於展示RoboBinding的各種特性的使用包含Fragment, Menu, ViewPager等。

    項目的中文文檔地址是:http://robobinding.github.io/RoboBinding/index.zh.html

    項目主頁:http://www.open-open.com/lib/view/home/1410667351476

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved