Hilt介绍
Hilt 是 Google 开发的一个依赖注入框架,专门为 Android 应用设计。它简化了依赖注入的过程,并与 Android 的生命周期和组件集成,使得代码更加清晰、可维护和可测试
1.依赖注入(DI)概念:
- 依赖注入是一种设计模式,允许一个对象接收它运行所需的其他对象。在 Android 中,这通常意味着将服务、存储库、数据库等外部依赖项注入到活动(Activities)、片段(Fragments)和其他组件中。
2.Hilt 的集成: - 要在 Android 项目中使用 Hilt,首先需要在项目的 build.gradle 文件中添加 Hilt 的依赖和插件。
- 在应用的入口点(通常是 Application 类)上添加 @HiltAndroidApp 注解来启用 Hilt。
3.定义组件和依赖关系: - 使用 @Module 注解来定义提供依赖项的模块。这些模块告诉 Hilt 如何创建和提供依赖项。
- 在需要注入依赖项的类中使用 @Inject 注解来标记构造函数或字段。
4.绑定依赖关系: - 在模块中,使用 @Binds 或 @Provides 注解来定义如何将依赖项绑定到具体的实现。
- @Binds 通常用于接口和抽象类的绑定,而 @Provides 用于具体类的实例创建。
5.注入依赖项: - 在需要依赖项的类中,使用 @Inject 注解来标记构造函数或字段,以便 Hilt 在运行时注入依赖项。
- Hilt 会自动处理依赖项的创建和注入,使得代码更加简洁和清晰。
6.支持 Android 生命周期: - Hilt 支持 Android 的生命周期,这意味着它可以管理依赖项的生命周期,确保它们在适当的时候被创建和销毁。
7.测试和调试: - 由于依赖项是通过 Hilt 注入的,这使得在单元测试和集成测试中模拟依赖项变得容易。
8.优势: - Hilt 简化了依赖注入的过程,减少了手动创建和管理依赖项的代码。
- 它与 Android 的生命周期和组件紧密集成,减少了内存泄漏和其他潜在问题。
- 提高了代码的可维护性、可测试性和重用性。
总的来说,Hilt 是一个强大的依赖注入框架,它使得在 Android Kotlin 项目中管理依赖项变得更加简单和直观。通过合理使用 Hilt,开发者可以写出更加健壮、可维护和可测试的代码。
开始集成
在config.gradle中写法
ext {
android = [
compileSdkVersion: 33,
minSdkVersion : 21,
targetSdkVersion : 33,
versionCode : 30,
versionName : "3.2.7"
]
dependVersion = [
hilt : "2.42",
]
versions = [
compileSdk : 33,
targetSdk : 33,
minSdk : 17,
ndk : '25.0.8775105',
androidxAppcompat : '1.5.0',
androidxAnnotations: '1.4.0',
androidxTest : '1.4.0',
coroutines : '1.6.4',
leakCanary : '2.9.1',
kotlin : '1.7.10',
material : '1.6.1'
]
commonDeps = [
"hilt" : "com.google.dagger:hilt-android:${dependVersion.hilt}",
"mmkv" : 'com.tencent:mmkv:1.3.0'
]
commonLibs = commonDeps.values()
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation rootProject.ext.commonLibs
}
在 Kotlin 和 Android 的 Dagger 依赖注入框架中,@Module 和 @InstallIn 注解是用来定义和配置依赖注入模块的。这些注解允许你声明和提供应用所需的依赖项。
@Module
@Module 注解用于标记一个类作为 Dagger 的模块。在这个类中,你可以定义如何提供应用所需的依赖项。这通常通过 @Provides 注解的方法来完成,这些方法会返回你想要注入的依赖项实例。
@InstallIn
@InstallIn 注解用于指定模块应该安装到哪个 Dagger 组件中。Dagger 2.x 引入了组件的概念,以更好地组织和管理依赖项。组件是 Dagger 用来封装和提供依赖项的对象。
@InstallIn 注解接收一个组件类型作为参数,例如 SingletonComponent::class,表示这个模块应该在单例组件中安装。这意味着该模块提供的依赖项将具有单例生命周期,与应用的整个生命周期一致。
在Application添加注解
@HiltAndroidApp
class MyApplication : BaseApplication() {}
在布局中的用法
@AndroidEntryPoint
class TestlFragment : Fragment() {
private lateinit var binding:FragmentAlcoholBinding
private val viewModel: TestViewModel by viewModels()
private var dataBody:ReceiveDataBody? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentTestBinding.inflate(inflater, container, false)
initClick()
initContent()
return binding.root
}
}
只有在fragment 或者Activity中添加@AndroidEntryPoint,才能使用@HiltModule的注解的类
通过Hilt可以帮助开发者极大的提高开发效率,降低耦合,减少冗余代码。
这是才项目章使用的Hilt的一点心得,与诸位贡献,希望能帮助到你