DataBinding的使用(一)

DataBingding個人使用很久了,覺得很好用且方便,讓自己的代碼更加簡單且少,讀取來更有可讀性。建議還未入手的趕緊用起來,真的是方便快捷簡單。常規用法很簡單,我將使用中需要注意的地方進行一下總結和歸納。本篇文章適合DataBinding的進階和擴展學習。DataBinding的基礎學習地址爲:DataBinding中文官方文檔

 

使用注意細節

雖然DataBinding使用簡單,但是還有些需要注意的地方,我將在下面意義列舉出來。

DataBinding(二)


目錄fa 

背景和使用限制

使用DataBinDing的優點

如何配置

符號轉義

使用注意細節


背景和使用限制

早在2015谷歌 I/O大會上就已提出DataBinding。如下是2018年google I/O大會,發佈的AAC及其他的圖。在2019的I/O 大會中AAC 有了新的趨勢和改變CameraX、SavedState for ViewModel、Jetpack Compose。

數據綁定庫既具有靈活性又具有廣泛的兼容性—它是一個支持庫,因此您可以將其與所有Android平臺以及Android 2.1(API級別7+)一起使用。同時要滿足Android Gradle 1.5.0-alpha1或更高版本的插件。

DataBinDing的優點

1.再也不需要編寫findViewById了,比butterknife好用多了

2.實時監測數據,自動刷新控件顯示

dataBinding的本身是對View層狀態的一種觀察者模式的實現。DataBinding採用了觀察者模式,雙向binding的使用需要防止死循環造成ANR,解決方案是需要判斷前後兩次的值是否一樣。

針對每個Activity或者Fragment的佈局,在編譯階段,會自動生成一個ViewDataBinding類的對象,該對象持有Activity要展示的數據和佈局中的各個view的引用。同時還有如下優勢:將數據分解到各個view、在UI線程上更新數據、監控數據的變化,實時更新,這樣一來,你要展示的數據已經和展示它的佈局緊緊綁定在了一起。

如何配置

首先在module的build.gradle中配置如下

上面的配置滿足了Java形式的支持,如果你是需要支持在kotlin中使用Databinding,則需要在module的build.gradle中繼續配置

爲什麼配置了 dataBinding{enabled = true}之後就可以使用dataBinding方式進行開發了?

Android Studio中是依靠gradle來管理項目的,在創建一個項目時,從開始創建一直到創建完畢,整個過程是需要執行很多個gradle task的,這些task有很多是系統預先幫我們定義好的,比如build task,clean task等,DataBinding相關的task也是系統預先幫我們定義好的,但是默認情況下,DataBinding相關的task在task列表中是沒有的,因爲我們沒有開啓dataBinding,但是一旦我們通過 dataBinding{enabled = true}的方式開啓DataBinding之後,DataBinding相關的task就會出現在task列表中,每當我們執行編譯之類的操作時,就會執行這些dataBinding Task, 這些task的作用就是檢查並生成相關dataBinding代碼,比如dataBindingExportBuildInfoDebug這個task就是用來導出debug模式下的build信息的。

ActivityMainBinding這個類從哪來的?

通過第一個問題的解釋,我們也就知道了ActivityMainBinding這個類其實是系統幫我們自動生成的。
但是如果你在實際編寫代碼的過程中,你會發現並沒有執行編譯、運行之類等操作,ActivityMainBinding這個類就直接能用了,竟然還有這種操作?其實是Android Studio 這個IDE自動幫我們做了這一步,在默認情況下,系統會使用Android Studio爲我們自動生成databinding相關的代碼,但是這種方式生成的代碼不能調試,如果你想通過點擊ActivityMainBinding跳轉到它的源碼中,你會發現並不能如你所願,而是會跳轉到對應的佈局文件中。那麼如果我們確實要查看ActivityMainBinding的源碼並且還想調試,我們就需要通過另外一種方式:手動編譯代碼。這兩種方式可以通過Android Studio的設置面板修改。

符號轉義

在我們使用過程中,有些地方是需要使用轉義字符的,如:

這樣會報編譯錯誤,我們需要將<>進行轉義表示

顯示結果 描述 轉義字符 十進制
  空格 &nbsp; &#160;
< 小於號 &lt; &#60;
> 大於號 &gt; &#62;
& 與號 &amp; &#38;
" 引號 &quot; &#34;
撇號 &apos; &#39;
× 乘號 &times; &#215;
÷ 除號 &divide; &#247;

與DataBinding技術類似的方法還有ViewBinding、Rxbinding。

`該篇博客純屬個人觀點和見解,如有錯誤懇請留言指正,萬分感激!`


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章