databinding 在編譯階段會(huì)將 xml文件拆分成兩段:
activity_main.xml
activity_main.xml
會(huì)將每個(gè)控件添加一個(gè)tag乍楚。
activity_main-layout.xml
activity_main-layout
ActivityMainBindingImpl.java
ActivityMainBindingImpl.java
DataBinding內(nèi)存開銷大的原因
1.創(chuàng)建了數(shù)組去存儲(chǔ)控件對象。
image.png
2.雙向綁定創(chuàng)建了Runnable去監(jiān)聽控件的變化
image.png
3.只要Model的數(shù)據(jù)改變舰涌,就會(huì)去刷新View,handler會(huì)消耗大量內(nèi)存
image.png
DataBinding的原理全部在ViewDataBinding.java中