2023-05-12-Hilt的使用
Hilt的作用
Hilt是Dagger的最强辅助
- Hilt简化了Dagger使用,
大量减少了使用Dagger时编写的模板代码
。 - Hilt提供一套标准组件和作用域注解:不必再自定义组件和作用域。
- Hilt提供几种预定义的的绑定(
提供对象实例的获取称为绑定
):如Application和Activity。 - Hilt提供集中预定义的限定符(Qualifier): @ApplicationContext和@ActivityContext。
添加依赖项
首先,将hilt-android-gradle-plugi
添加到Project
级的build.gradle
文件中:
plugins { |
然后,应用 Gradle 插件并在 app/build.gradle
文件中添加以下依赖项:
plugins { |
Hilt 使用 Java 8 功能。如需在项目中启用 Java 8,请将以下代码添加到 app/build.gradle
文件中:
android { |
Hilt 应用类
所有使用 Hilt 的应用都必须包含一个带有 @HiltAndroidApp
注解的 Application
类。
@HiltAndroidApp
会触发 Hilt 的代码生成操作,生成的代码包括应用的一个基类,该基类充当应用级依赖项容器。
|
生成的这一 Hilt 组件会附加到 Application
对象的生命周期,并为其提供依赖项。此外,它也是应用的父组件,这意味着,其他组件可以访问它提供的依赖项。
将依赖项注入 Android 类
在 Application
类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint
注解的其他 Android 类提供依赖项:
|
Hilt 目前支持以下 Android 类:
Application
(通过使用@HiltAndroidApp
)ViewModel
(通过使用@HiltViewModel
)Activity
Fragment
View
Service
BroadcastReceiver
如果您使用 @AndroidEntryPoint
为某个 Android 类添加注解,则还必须为依赖于该类的 Android 类添加注解。例如,如果您为某个 fragment 添加注解,则还必须为使用该 fragment 的所有 activity 添加注解。
注意:在 Hilt 对 Android 类的支持方面适用以下几项例外情况:
- Hilt 仅支持扩展
ComponentActivity
的 activity,如AppCompatActivity
。- Hilt 仅支持扩展
androidx.Fragment
的 Fragment。- Hilt 不支持保留的 fragment。
@AndroidEntryPoint
会为项目中的每个 Android 类生成一个单独的 Hilt 组件。这些组件可以从它们各自的父类接收依赖项,如组件层次结构中所述。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 码行!
评论
ValineDisqus