DataBinding的使用,请戳这里,本文主要是介绍DataBinding原理
1. DataBinding作用,实现一个MVVM
2. DataBinding使用的主要技术点,Java APT,观察者,注解等
3. DataBinding关键类
ActivityMainBindingImpl 具体实现了绑定
ViewDataBinding 持有activity或者fragment和View的引用,主要作用一次遍历View,实例化所有子View,并存储在数组中,这里解决了findviewbyid性能问题,同时为我们省去了findviewbyid的操作
BR 类似Android R文件
DataBinderMapperImpl 提供了布局文件layoutid到ViewDataBinding类对象的映射,主要用于加载layout返回对应的ViewDataBinding对象
4. DataBinding如何实现双向绑定的
如图:
DataBinding在编译时会生成一个ViewDataBinding的子类xxBinding,例如ActivityMainBinding,ActivityMainBinding默认持有了View和Model和Activity/Fragment,在ActivityMainBinding里面有个关键方法,excuteBinding(),在这里为View设置值,同时设置了BindingAdapter和InverseBindingLinstener,如上图所示。BindingAdapter主要是提供了View的set get方法和状态Linstener。
5. DataBinding的缺点,查问题比较难,其它暂未发现