📜  在 Android 中使用 Dagger-Hilt 在 ViewModel 中进行辅助依赖注入(1)

📅  最后修改于: 2023-12-03 14:50:50.890000             🧑  作者: Mango

在 Android 中使用 Dagger-Hilt 在 ViewModel 中进行辅助依赖注入

在 Android 应用程序开发中,依赖注入是一个非常流行的技术。它可以帮助你更好的管理应用程序中各个类的依赖关系,从而实现解耦和高可测试性。

Dagger-Hilt 是 Google 推出的一个基于 Dagger2 实现的 Android 依赖注入框架。它使得依赖注入变得更加简单,开发者可以更加专注于业务逻辑的实现。

在 ViewModel 中使用 Dagger-Hilt 进行依赖注入是一个非常好的实践。本篇文章将简要介绍如何使用 Dagger-Hilt 在 ViewModel 中进行辅助依赖注入。

创建 ViewModel

首先,我们需要创建一个 ViewModel 类。ViewModel 是一个被设计为将数据存储和处理的类,它通常与 UI 控制器(比如 Activity 或 Fragment)一起工作,用来管理 UI 的状态和行为。

在 Kotlin 中,创建一个 ViewModel 非常简单,只需要继承 ViewModel 类即可:

import androidx.lifecycle.ViewModel

class MyViewModel : ViewModel() {
    // Your ViewModel code here
}

一旦你创建了一个 ViewModel,你就可以在 Activity 或 Fragment 中使用它了。例如,你可以使用以下代码来获取一个 ViewModel 实例:

import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders

class MyActivity : AppCompatActivity() {
    private lateinit var viewModel: MyViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my)

        viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
    }
}

这是一个基本的 ViewModel,现在我们将介绍如何在其中进行辅助依赖注入。

使用 Dagger-Hilt 进行辅助依赖注入

Dagger-Hilt 允许我们在 ViewModel 中使用依赖注入,使得我们可以更好地管理 ViewModel 的依赖关系。接下来,将会介绍如何在 ViewModel 中使用 Dagger-Hilt 进行依赖注入。

首先,我们需要在项目中添加 Dagger-Hilt 的依赖关系。在 build.gradle(Module:app) 文件中加入以下依赖:

dependencies {
    implementation 'com.google.dagger:hilt-android:2.28-alpha'
    kapt 'com.google.dagger:hilt-android-compiler:2.28-alpha'
}

接下来,在应用程序类中添加 @HiltAndroidApp 注释,这会启用 Dagger-Hilt 在应用程序的整个生命周期中进行依赖注入。

@HiltAndroidApp
class MyApplication : Application()

现在我们已经配置好了 Dagger-Hilt,接下来我们需要在 ViewModel 中使用它。为了在 ViewModel 中使用 Dagger-Hilt 进行依赖注入,我们需要使用 @HiltViewModel 注释来注释我们的 ViewModel 类。

@HiltViewModel
class MyViewModel @Inject constructor(private val repository: MyRepository) : ViewModel() {
    // Your ViewModel code here
}

在这里,我们使用了 @Inject 注释来注入我们的 MyRepository 对象。同时,@HiltViewModel 注释使得我们的 ViewModel 可以使用 Dagger-Hilt 进行依赖注入。

在此之后,我们需要通过以下代码创建 ViewModel 实例:

class MyActivity : AppCompatActivity() {
    private val viewModel: MyViewModel by viewModels()
}

在此示例中,我们使用了 by viewModels() 来获取 MyViewModel 的实例。这会自动将 ViewModel 和其相关的依赖注入到我们的 Activity 中。

至此,我们已经成功地使用 Dagger-Hilt 在 ViewModel 中进行辅助依赖注入!

总结

本文介绍了如何使用 Dagger-Hilt 在 Android 的 ViewModel 中进行辅助依赖注入。通过使用 Dagger-Hilt,我们可以更好地管理 ViewModel 的依赖关系,并使得代码更加易于维护和测试。如果你想要了解更多关于 Dagger-Hilt 的内容,建议参考 Dagger-Hilt 的官方文档。