Android Databinding技術由淺入深(1)------Databinding的介紹

本文參照Data Binding Library - Android Developers 谷歌官方

從今天開始將為大家由淺入深(PS:希望不是從入門到放棄)的講一下谷歌在安卓平臺上的數據綁定框架:Databinding

前言:

2015年谷歌I/O大會上就介紹了一個框架DataBinding,堪稱解決界面邏輯的黑科技,但是使用率非常少,研究的人更少,那這是不是一個優秀的框架呢,是不是對項目有用呢,接下來的幾天我將帶大家深入研究一下。

這篇文章不說技術,只了解一下DataBinding。

一、數據綁定是什么?

幾年前,數據綁定便已在前端世界中風生水起,Angular.js、React.js、vue.js等熱門前端框架都具備這種能力。

數據綁定簡單來說,就是通過某種機制,把代碼中的數據和xml(UI)綁定起來,雙方都能對數據進行操作,并且在數據發生變化的時候,自動刷新數據。

二、數據綁定怎么用?

數據綁定分為單向綁定雙向綁定兩種方式。

單向綁定就是說數據的流向是單方面的,只能從代碼流向UI;

雙向綁定的數據流向是雙向的,當業務代碼中的數據改變時,UI上的數據能夠得到刷新;當用戶通過UI交互編輯了數據時,數據的變化也能自動的更新到業務代碼中的數據上。

單向數據綁定和雙向數據綁定示例


三、DataBinding這門技術有什么優點呢?

1.性能很好,因為它0反射,而且性能比直接findViewById要高。后面的文章將會從源碼角度介紹。

2.谷歌原生支持(相比與其他第三方的數據綁定框架比如Android-databinding和RoboBinding),可以說是親兒子,有自家IDE支持。

3.將MVP框架變成MVVM框架,代碼更簡潔,邏輯更清晰。

4.減少代碼線程切換更新UI(列表除外),除了要在列表中考慮線程問題。

5.自動檢查空指針,也不用擔心空指針。

四、DataBinding這門技術一直不溫不火,為什么呢?

根據我的使用感受是這么幾條:

1.不太成熟,當然并不是說技術不成熟,只是Android Studio的IDE對xml編寫時還是不太友好;代碼自動補全功能做得還是有點差;另外如果 XML 中有編輯錯誤,在 Build 的時的提示會很莫名其妙,很難排查到問題。這幾個小問題有待Google日后的改善。

2.使用局限,在使用過程中發現它與某些技術沖突,比如插件化技術、熱修復技術,如果想用Databinding還需要另外增加開發成本來配合它。

3.學習成本,其實我認為這個并不算一條,因為做我們這行學什么沒有成本呢,是吧。

回答完上面幾個問題,那我們看DataBinding解決了哪幾個痛點會被稱為解決界面邏輯的黑科技的呢?(咳咳,劃重點了)

- 需要多次使用findViewById,損害了應用性能且令人厭煩

- 更新UI數據需切換至UI線程,將數據分解映射到各個view比較麻煩

-自動檢查空指針,例如 android:text="@{user.lastName}" ,如果user為空,程序不會崩潰,只是顯示空值。

Data Binding 解決了 Android UI 編程中的這幾個痛點,官方原生支持 MVVM 模型可以讓我們在不改變既有代碼框架的前提下,非常容易地使用這些新特性。其實在此之前,已經有些第三方的框架(RoboAndroid) 可以支持 MVVM 模型,無耐由于框架的侵入性太強,導致一直沒有流行起來。

說了這么多,有沒有躍躍欲試呢?

現在Android Studio 2.0已經發布了,對data binding的支持又更進了一步!

做技術的,不要畏首畏尾,要樂于嘗試新的技術。

學習目錄

1.Android Databinding技術由淺入深(1)------Databinding的介紹

2.Android Databinding技術由淺入深(2)------Databinding的簡單使用

3.Android Databinding技術由淺入深(3)------Databinding的源碼解析

4.Android Databinding技術由淺入深(4)------Databinding進階MVVM全框架

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容