#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南
Posted Petterpx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南相关的知识,希望对你有一定的参考价值。
Hilt 是Google 最新的依赖注入框架,其是基于Dagger研发,但它不同于Dagger。对于android开发者来说,Hilt可以说专门为Android 打造,提供了一种将Dagger依赖项注入到Android应用程序的标准方法,而且创建了一组标准的组件和作用域,这些组件会自动集成到Android应用程序的各个生命周期中,以简化开发者的上手难度。
相应的一些注解如下:
-
@HiltAndroidApp
触发Hilt的代码生成,包括适用于应用程序的基类,可以使用依赖注入,应用程序容器是应用程序的父容器,这意味着其他容器可以访问其提供的依赖项。
-
@AndroidEntryPoint
其会创建一个依赖容器,该容器遵循Android类的生命周期
-
@Inject
用来注入的字段,其类型不能为Private
如果要告诉 Hilt 如何提供相应类型的实例,需要将 @Inject 添加到要注入的类的构造函数中。
Hilt有关如何提供不同类型的实例的信息也称为绑定。
-
@Install(xx)
Install 用来告诉 Hilt 这个模块会被安装到哪个组件上.
组件(Compenent)
Compenent | Injector for |
---|---|
ApplicationComponent |
Application |
ActivityRetainedComponent |
ViewModel (请参阅JetPack-ViewModel扩展) |
ActivityComponent |
Activity |
FragmentComponent |
Fragment |
ViewComponent |
View |
ViewWithFragmentComponent |
View 与 @WithFragmentBindings |
ServiceComponent |
Service |
需要注意的是,Hilt仅支持扩展FragmentActivity
(如AppCompatActivity
)的活动和扩展Jetpack库的片段Fragment
,而不支持Fragment
Android平台(现已弃用)的 片段 。
组件(Compenent)的生命周期
- 它限制了在创建组件和生成组件范围绑定的生命周期
- 它指示合适可以使用成员注入的值。(例如:当@Inject 字段不为null时)
Component | 作用范围 | Created at | Destroyed at |
---|---|---|---|
ApplicationComponent |
@Singleton |
Application#onCreate() |
Application#onDestroy() |
ActivityRetainedComponent |
@ActivityRetainedScope |
Activity#onCreate() 1 |
Activity#onDestroy() 1 |
ActivityComponent |
@ActivityScoped |
Activity#onCreate() |
Activity#onDestroy() |
FragmentComponent |
@FragmentScoped |
Fragment#onAttach() |
Fragment#onDestroy() |
ViewComponent |
@ViewScoped |
View#super() |
View destroyed |
ViewWithFragmentComponent |
@ViewScoped |
View#super() |
View destroyed |
ServiceComponent |
@ServiceScoped |
Service#onCreate() |
Service#onDestroy() |
例如:
@Singletion
class TestCompenent @Inject constructor()
如何使用?
先导入依赖
implementation com.google.dagger:hilt-android:2.28-alpha
kapt com.google.dagger:hilt-android-compiler:2.28-alpha
classpath com.google.dagger:hilt-android-gradle-plugin:2.28-alpha
相应的model下增加
apply plugin: dagger.hilt.android.plugin
举个
以上是关于#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南的主要内容,如果未能解决你的问题,请参考以下文章