sunflower
sunflower是什么?太阳花?Google没出这个框架吧。
其实,sunflower是Google基于Google开发框架,加入大量Android JetPack组件的示例项目,涉及到kotlin,kotlin协程,新fragment,hilt,DataSource,paging3等等等等。
话不多说,先clone一下吧,地址如下:https://github.com/android/sunflower.git
开始
clone完成之后,打开项目,项目本身并不复杂,也没有使用插件化,组件化之类的技术。
在编译项目的时候,发生了gradle版本错误,因为项目默认的gradle版本是4.1.0,我的android studio还是4.0,通过升级android studio或者将gradle版本改成4.0.0解决。
常规操作,打开AndroidManifest文件,很简单的配置文件,找到首页 GardenActivity 。 同样,极简的代码,一点点看。
两个知识点出现了,DataBinding和Hit。一个个来,先Hilt
Hilt
Hilt?这是什么,遇到不认识的单词,我们一般做的是放到翻译网站翻译一下,主流翻译的结果是剑柄,刀柄。还是不明觉厉,此时,我们注意到hilt的包的路径,是不是很熟悉,dagger,依赖注入?dagger中文意思是匕首,而hilt是刀柄,是不是有点明确了,光有刀还不行,还需要一个可以更安全的使用刀,而且还能保护自己安全的刀把。
那么,先下个结论,hilt的职责是依赖注入,而且是更方便,更安全的依赖注入。
引入
-
在根目录的build.gradle添加hilt-android-gradle-plugin插件
buildscript { ... dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha' } }
-
在项目的build.gradle中添加依赖
apply plugin: 'kotlin-kapt' apply plugin: 'dagger.hilt.android.plugin' dependencies { .... implementation "com.google.dagger:hilt-android:2.28-alpha" kapt "com.google.dagger:hilt-android-compiler:2.28-alpha" }
- 如果不用Java8,引入的过程到这就结束了
使用
-
需要新建application,加入@HiltAndroidApp注解,随后将其添加到配置文件中
@HiltAndroidApp class BaseApplication : Application()
-
接下来就是刚刚提到的GardenActivity了,在代码中出现了@AndroidEntryPoint注解,Hilt总共支持六种Android类,除了刚刚出现过得Application和Activity,还有Fragment,View,Service,BroadcastService。
我们以Activity为例,简单看一下具体的工作流程。新建一个Activity,添加@AndroidEntryPoint注解。
@AndroidEntryPoint class HiltMainActivity