Android项目中使用Hilt

Hilt 是一个基于 Dagger 的依赖注入库,可以简化 Android 应用中的依赖注入流程。下面是在 Android 项目中使用 Hilt 的步骤:

1、添加 Hilt Gradle 插件
在项目的 build.gradle 文件中添加以下依赖:

buildscript {
    repositories {
        google()
    }
    dependencies {
        ...
        classpath 'com.google.dagger:hilt-android-gradle-plugin:<version>'
    }
}

并在 app 的 build.gradle 文件中应用插件:

plugins {
    ...
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

android {
    ...
}

dependencies {
    ...
    implementation 'com.google.dagger:hilt-android:<version>'
    kapt 'com.google.dagger:hilt-android-compiler:<version>'
}

2、在 Application 类中添加 Hilt
在 Application 类上添加 @HiltAndroidApp 注解。

@HiltAndroidApp
class MyApplication : Application() {
    ...
}

3、添加依赖注入类
创建一个或多个依赖注入类,使用 @Module 和 @Provides 注解来提供依赖项。

@Module
@InstallIn(ApplicationComponent::class)
object MyModule {
    @Provides
    fun provideMyDependency(): MyDependency {
        return MyDependencyImpl()
    }
}

4、在需要使用依赖项的类中添加 @Inject 注解
在需要使用依赖项的类的构造函数上添加 @Inject 注解,Hilt 将自动注入所需的依赖项。

class MyViewModel @Inject constructor(
    private val myDependency: MyDependency
) : ViewModel() {
    ...
}

以上是在 Android 项目中使用 Hilt 的基本步骤,可以根据实际需求进行调整。

比如,使用Hilt依赖注入Retrofit
1、添加依赖
在项目的 build.gradle 文件中添加以下依赖:

implementation 'com.google.dagger:hilt-android:2.40.5'
kapt 'com.google.dagger:hilt-android-compiler:2.40.5'

2、在 Application 类中添加 Hilt 注解
在 Application 类上添加 @HiltAndroidApp 注解,这将告诉 Hilt 应用使用 Hilt 进行依赖注入。

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

3、创建依赖注入模块
在应用的依赖注入模块中,我们可以使用 @Module 注解来标记一个类,表示它是一个依赖注入模块。在这个类中,我们可以使用 @Provides 注解来标记一个方法,表示它可以提供一个依赖项的实例,这个模块提供了一个 Retrofit 实例,这个实例可以在其他地方使用。

@Module
@InstallIn(ApplicationComponent.class)
public class NetworkModule {
 
    @Provides
    public static Retrofit provideRetrofit() {
        return new Retrofit.Builder()
            .baseUrl("https://api.example.com/")
            .build();
    }
}

4、在需要使用依赖项的类中添加 Hilt 注解
在需要使用依赖项的类中,我们可以使用 @AndroidEntryPoint 注解来标记一个类,表示它可以接受依赖注入。在这个类中,我们可以使用 @Inject 注解来标记一个变量,表示它需要依赖项的实例。

@AndroidEntryPoint
public class MyActivity extends AppCompatActivity {
 
    @Inject
    Retrofit retrofit;
 
    ...
}

在这个类中,我们使用 @Inject 注解来标记 Retrofit 变量,表示它需要一个 Retrofit 实例。Hilt 将会自动注入这个变量,这样我们就可以在这个类中使用 Retrofit 实例了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容