關于Android的Data Binding技術

碼頭工人 9年前發布 | 45K 次閱讀 Android Android開發 移動開發

此次Google IO大會,給Andorid開發者帶來了很多福利。我對其中的Data Binding技術最感興趣,所以花時間研究了一下。

Data Binding與MVVM

Data Binding即數據綁定,在很多前端框架中都有應用,比如Google維護的AngularJS就支持View和Model的雙向綁定。當數據更新,框架收到通知,視圖可以自動更新,View和Model可以做到松耦合。

有了Data Binding庫的支持,在Android中可以很方便的實現MVVM的開發模式。MVVM,是Windows社區的一種叫法,即Model-View- ViewModel。在Android中,Activity,Fragment,Dialog之類都屬于View層;Model層主要負責數據相關部分,可以從數據庫或者網絡獲取;ViewModel主要是把Model轉換為View可以呈現的東西,例如把一個Date類型轉化為格式化后的String。

ViewModel在哪里呢?在Data Binding插件的支持下,會實時生成以Layout名稱命名的Binding類,比如Layout名稱為activity_main,則會生成 ActivityMainBinding類,數據綁定在Layout文件中XML標注,最終在ActivityMainBinding中轉化為Java代碼,所以ActivityMainBinding類扮演了ViewModel的角色。

在我看來,MVVM相對于傳統的MVC,把一些業務邏輯抽離,放到ViewModel中,可以減輕Activity和Fragment的壓力,同時數據綁定也大大減少了邏輯代碼,另一方面對于測試來說,數據變化引起視圖自動更新,可以更加方便測試。但在XML中進行數據綁定的操作,可能不利于調試。

在Google官方發布Data Binding庫之前,已經有類似的開源項目,如RoboBinding,支持雙向綁定等,比較成熟,Google的庫目前只支持單向綁定,為Beta版本,不知道后面是不是還有很多特性改進。你會發現,由于Android的開源特性,開發者在很多方面走在了Google的前面,比如這次發布的權限控制,國內很多ROM早就有了這個功能。我在想,當Google發布新版本的時候,會不會去看看MIUI有什么特性優化呢。

參考資料

Data Binding Guide (官方資料)

Web開發的MVVM模式(MVC VS. MVP VS. MVVM)

MVVM介紹(iOS中MVVM的一種實現,對概念的理解有幫助)

MVVM on Android: What You Need to Know (這個博客很不錯)

Animating Android Binding Transitions(Data Binding技巧)

Sample

官方貌似沒有Data Binding的Sample,我寫了個簡單的Demo,Github地址:
https://github.com/jasonross/DataBindingSample

</div> 來自:http://jiajixin.cn/2015/05/31/android-data-binding/

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