> DataBinding 框架
DataBindingDemo- https://github.com/dragonjiang/DataBindingDemo
2015年的Google IO大会上,Android团队发布了一个官方的数据绑定框架(Data Binding Library)。通过这个框架可以
直接在layout布局文件中绑定数据,无需再写繁琐的findViewById,可以为我们省下大量的样板代码;更进一步的,可以
直接通过更改数据来改变视图,把繁琐的事情交给Data Binding Library。
DataBindingSamples- https://github.com/leavesC/DataBindingSamples
Android DataBinding 从入门到进阶- https://www.jianshu.com/p/2c4ac24761f5
DataBinding 是谷歌官方发布的一个框架,顾名思义即为数据绑定,是 MVVM 模式在 Android 上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰。MVVM 相对于 MVP,其实就是将 Presenter 层替换成了 ViewModel 层。DataBinding 能够省去我们一直以来的 findViewById() 步骤,大量减少 Activity 内的代码,数据能够单向或双向绑定到 layout 文件中,有助于防止内存泄漏,而且能自动进行空检测以避免空指针异常.
-- Data Binding Library是一个support库,最低支持到Android 2.1(API level 7+)。
要使用data binding需要将Gradle升级到1.5.0-alpha1或者更新的版本,Android Studio升级到1.3或者更新的版本。
类似于ButterKnife、GreenDao3.x等第三方扩展库,Data Binding会在运行时,根据布局文件通过一定的规则自动生成
java文件,如果发现相应的类没有自动生成(Android Studio中会报错,找不到响应的类文件),可以采用clean或者
rebuild的方式,让AndroidStudio主动生成代码。
-- Data Binding 利弊
1.优势:
DataBinding 出现以前,我们在实现 UI 界面时,不可避免的编写大量的毫无营养的代码:比如 View.findViewById();
比如各种更新 View 属性的 setter:setText(),setVisibility(),setEnabled() 或者 setOnClickListener() 等等。
这些“垃圾代码”数量越多,越容易滋生 bug。
使用 DataBinding,我们可以避免书写这些“垃圾代码”。
2.劣势:
使用 Data Binding 会增加编译出的 apk 文件的类数量和方法数量。
新建一个空的工程,统计打开 build.gradle 中 Data Binding 开关前后的 apk 文件中类数量和方法数量,类增加了
120+,方法数增加了 9k+(开启混淆后该数量减少为 3k+)。
如果工程对方法数量很敏感的话,请慎重使用 Data Binding。
> MVVM
MVVM可以算是MVP的升级版,其中的VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体,ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力。
Data Binding是google发布的用以实现数据和UI绑定的框架,使用此框架可方便的实现MVVM开发模式。借用阮一峰老师对MVVM模式的概括:“MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。”