Android依赖注入与Hilt的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

基础知识

一、依赖注入是什么?

二.如果依赖注入这么简单,为什么需要专门开发一个框架?

三.安卓的依赖注入框架Dagger与Hilt

四.Hilt的使用

hilt相关的注解

hilt基本使用

必须配置选项

onlysampletest分支代码详解

complextest分支代码详解(更复杂一些的使用)

场景

hilt的场景实现

provider分支代码

Hilt进阶使用

multipleObjtest分支使用(同一类型提供多实现)

预定义限定符(@ApplicationContext @ActivityContext)

官方提供的类生成组件(抄官方)

组件作用域(抄官方)

组件默认绑定(抄官方)



基础知识


一、依赖注入是什么?

类通常需要引用其他类。例如,Car 类可能需要引用 Engine 类。这些必需类称为依赖项,在此示例中,Car 类依赖于拥有 Engine 类的一个实例才能运行。

类可通过以下三种方式获取所需的对象:

  1. 类构造其所需的依赖项。在以上示例中,Car 将创建并初始化自己的 Engine 实例。
  2. 从其他地方抓取。某些 Android API(如 Context getter 和 getSystemService())的工作原理便是如此。
  3. 以参数形式提供。应用可以在构造类时提供这些依赖项,或者将这些依赖项传入需要各个依赖项的函数。在以上示例中,Car 构造函数将接收 Engine 作为参数。

第三种方式就是依赖项注入!使用这种方法,您可以获取并提供类的依赖项,而不必让类实例自行获取。

下面是一个示例。在不使用依赖项注入的情况下,要表示 Car 创建自己的 Engine 依赖项,代码如下所示:

class Car {

    private Engine engine = new Engine();

    public void start() {
        engine.start();
    }
}

class MyApp {
    public static void main(String[] args) {
        Car car = new Car();
        car.start();
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APaBp33c-1670170591309)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

这段代码直接通过Car类的new方法通过申请一片内存空间创建一个新的engine对象,但是这显然不能不能满足我们要求,

首先,Car 类一旦被实例化,就会伴随着 Engine 类的实例化,也就使得 Car 类在实例化时必须知道 Engine 类的实例化需要哪些条件,在我们的例子中就是 PetrolEngine 类实例化需要的条件。

其次,对 Engine 的强依赖使得

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hilt 是一个用于简化依赖注入的框架,可以在 Android 应用程序中使用它来管理和注入依赖项。下面是使用 Hilt 进行依赖注入的一个简单示例应用: 1. 添加 Hilt 相关依赖到项目中。在项目的根目录的 `build.gradle` 文件中添加 Hilt Gradle 插件的依赖: ```groovy buildscript { repositories { ... } dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:<version>' } } ``` 在应用模块的 `build.gradle` 文件中应用 Hilt 插件,并添加 Hilt 相关依赖: ```groovy apply plugin: 'kotlin-kapt' apply plugin: 'dagger.hilt.android.plugin' android { ... } dependencies { implementation 'com.google.dagger:hilt-android:<version>' kapt 'com.google.dagger:hilt-android-compiler:<version>' ... } ``` 2. 在 Application 类上添加 `@HiltAndroidApp` 注解,将其标记为 Hilt 应用程序: ```kotlin import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class MyApp : Application() { // Application 的实现代码... } ``` 3. 创建一个需要依赖注入的类,例如 UserRepository: ```kotlin import javax.inject.Inject class UserRepository @Inject constructor() { // UserRepository 的实现代码... } ``` 4. 在需要进行依赖注入的类中,使用 `@Inject` 注解来标记需要注入的依赖项。例如,在 MainActivity 中: ```kotlin import javax.inject.Inject @AndroidEntryPoint class MainActivity : AppCompatActivity() { @Inject lateinit var userRepository: UserRepository // Activity 的实现代码... } ``` 通过以上步骤,Hilt 会自动管理依赖项的创建和注入。在 MainActivity 中,`userRepository` 字段将会被自动注入一个 UserRepository 实例。 需要注意的是,使用 Hilt 进行依赖注入需要在 Android Studio 中启用 kapt 插件。 这只是一个简单的示例,Hilt 可以在更复杂的应用程序中提供更多的依赖注入功能和灵活性。 希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值