Android Jetpack 的 Hilt依赖注入框架的使用介绍

本文详细介绍了Android Jetpack中的Hilt依赖注入框架的使用,从引入Hilt到ViewModel和WorkManager的注入,包括接口注入、不同实例注入及第三方库如Retrofit的依赖注入,并讲解了预定义限定符在传递Context时的应用。
摘要由CSDN通过智能技术生成

Hilt依赖注入框架的使用介绍

引入Hilt

1. 在项目根目录的build.gradle文件中配置Hilt的插件路径:

buildscript {
   
    ...
    dependencies {
   
        ...
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha'
    }
}

2. 在app/build.gradle文件中,引入Hilt的插件并添加Hilt的依赖库:

...
//apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'

android {
   
    ...
}

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

这里同时还引入了kotlin-kapt插件,是因为Hilt是基于编译时注解来实现的,而启用编译时注解功能一定要先添加kotlin-kapt插件。如果你还在用Java开发项目,则可以不引入这个插件,同时将添加注解依赖库时使用的kapt关键字改成annotationProcessor即可

3. 在项目中启用 Java 8,请将以下代码添加到 app/build.gradle 文件中:

android {
   
  ...
  compileOptions {
   
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

.

.

Hilt的简单使用

使用步骤:

1. 创建MyApplication类

@HiltAndroidApp
public class MyApplication extends Application {
   
 ... 
}

注:

所有使用 Hilt 的应用都必须包含一个带有 @HiltAndroidApp 注释的 Application 类

  • @HiltAndroidApp : 会触发 Hilt 的代码生成操作,生成的代码包括应用的一个基类,该基类充当应用级依赖项容器

2. 将MyApplication注册到你的AndroidManifest.xml文件当中

<application
    android:name=".MyApplication"
    ...>
    
</application>

3. 将依赖项注入 Android 类

@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch);
    }

}

在 Application 类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint 注释的其他 Android 类提供依赖项

Hilt 目前支持以下 Android 类:

  • Application(通过使用 @HiltAndroidApp)
  • Activity
  • Fragment
  • View
  • Service
  • BroadcastReceiver

注意:
在 Hilt 对 Android 类的支持方面还要注意以下几点:

  • Hilt 仅支持扩展 ComponentActivity 的 Activity,如 AppCompatActivity

  • Hilt 仅支持扩展 androidx.Fragment 的 Fragment

  • Hilt 不支持保留的 Fragment

4. 创建需要被注入的类

public class MyClass {
   
	
	@Inject
	public void MyClass(){
   
	
	}		

	public void addLog(){
   
		Log.d("TAG","我是需要被注入的类");
	}

}

向 Hilt 提供绑定信息的一种方法是构造函数注入在某个类的构造函数中使用 @Inject 注释,以告知 Hilt 如何提供该类的实例

注意:

  • Hilt注入的字段是不可以声明成private的

补充: 如果构造函数携带参数,那么需要对参数的类也要依赖注入的相关处理;

例如 :就是MyClass的构造函数中所依赖的所有其他对象都支持依赖注入了,那么MyClass才可以被依赖注入

5. 把创建的类注入到Activity中

@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {
   

	@Inject
	MyClass myclass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch);
		
		//调用MyClass里的方法
		myclass.addLog
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值