Jetpack ---- DataBinding完全解析(一)gradle是如何导入DataBinding的
最近在看jetpack的Data Binding的一些入门、原理以及源码解析文章时,发现这些文章都有各自的介绍到的地方和未介绍到的地方,因此我打算整合一下我看到的文章,对Data Binding进行一个比较全面的解析。
首先android官网对Data Binding的各方面介绍看完之后,如果你之前没使用过,会让你觉得很抽象,但是我觉得还是需要去看看的,这样也能让没使用的人对其有大概的认识,如果大家感兴趣,可以去官网自己学习,或者去下面我翻译的博客学习,可能有些地方翻译错误,欢迎指正。
Jetpack ---- Data Binding入门(一)
Jetpack ---- Data Binding入门(二)
这篇博客主要介绍gradle,是如何让databinding工作的。
首先我们要先依赖gradle和databing,才能查看相关源码。如下
implementation 'com.android.tools.build:gradle:3.6.1'
dataBinding {
enabled = true
}
首先我们需要对gradle和grovvy有一个大概的了解,我当时也学习过,虽然现在不经常用,忘记的大概差不多了,但是如果大家有兴趣还是可以去我相关的博客学习。
Groovy语言学习
Android Studio 中如何运行 groovy 程序
gradle学习参考博客
分析流程
我对于gradle的知识忘得差不多了,就给大家介绍一下我看到的大概流程吧,有说错的地方大家指正。
build.gradle
我们知道databinding可以通过gradle配置直接导入,不需要我们添加依赖,那么肯定是gradle内部自己导入了,那么我们先找到导入databinding模块的build.gradle文件。
BaseExtension
首先,按住ctrl键加鼠标左击 compileSdkVersion,之前左击dataBinding我记得也提示能查看源码,后来不知道为什么不行了。
目前我们对于gradle怎么实现databinding的没有一点头绪,但是我们可以通过BaseExtension类的注释了解到它的主要作用是 所有Android插件的基本扩展。而如果是android项目必须应用插件“ com.android.application”,应用 application plugin并使’android’块可用于指定特定于Android的构建选项。也就是说我们添加了 apply plugin: 'com.android.application'
后,该模块android 的Extension才能使用。
我们可以现在BaseExtension文件中搜索databinding如下:
DataBindingOptions
我们点进DataBindingOptions看一看这个类是干嘛的,通过注释可以看出它是用于配置数据绑定选项的DSL对象。而我们常用的就只是enabled设置是否开启databinding。
然后我们搜索一下使用DataBindingOptions都有哪些类,发现TaskManager也引用了。
TaskManager
从TaskManager的注释可知它是用来管理任务创建的。我分析得出这是一个抽象类,负责抽象下图中比较通用的任务,当然这应该只是这个类的部分作用,我们下面主要分析databinding的部分。
对于上面定义task,我们在android studio 右侧的gradle卡片里面都能搜到,比如
<