返回

Android Hilt 初探:揭秘 Hilt 的基本使用和详解

Android

Android Hilt: 初探依赖注入的便捷之道

简介

Android Hilt是Google官方推出的一款专门面向Android的依赖注入框架。它与Dagger2合作开发,简化了依赖注入的配置和使用,让Android开发人员可以更轻松地构建模块化和可测试的代码。

安装和配置

1. 添加依赖项

在你的项目中添加以下依赖项:

dependencies {
  implementation "com.google.dagger:hilt-android:$hilt_version"
  kapt "com.google.dagger:hilt-compiler:$hilt_version"
}

2. 启用Hilt代码生成器

在你的build.gradle文件中添加以下内容:

kapt {
  correctErrorTypes true
}

3. 创建Application类

创建Application类并继承HiltAndroidApp:

public class MyApplication extends HiltAndroidApp { }

使用Hilt注入依赖项

1. 使用@Inject注解

在需要注入依赖项的类中使用@Inject注解。例如:

public class MyActivity {

  @Inject
  MyViewModel viewModel;

  ...
}

2. 生成Dagger组件

Hilt会自动为你的项目生成Dagger组件。Dagger组件负责提供依赖项。你可以使用@Component注解来定义Dagger组件。例如:

@Component(modules = [MyModule.class])
public interface MyComponent {

  void inject(MyActivity activity);

  ...
}

3. 绑定依赖项

在Dagger组件中使用@Module注解来绑定依赖项。例如:

@Module
public class MyModule {

  @Provides
  MyViewModel provideViewModel() {
    return new MyViewModel();
  }

  ...
}

处理依赖项的生存周期

1. @Singleton作用域

@Singleton作用域表示依赖项在整个应用程序的生命周期内都是单例的。例如:

@Singleton
@Provides
MyViewModel provideViewModel() {
  return new MyViewModel();
}

2. @ActivityScope作用域

@ActivityScope作用域表示依赖项在整个Activity的生命周期内都是单例的。例如:

@ActivityScope
@Provides
MyViewModel provideViewModel() {
  return new MyViewModel();
}

3. @FragmentScope作用域

@FragmentScope作用域表示依赖项在整个Fragment的生命周期内都是单例的。例如:

@FragmentScope
@Provides
MyViewModel provideViewModel() {
  return new MyViewModel();
}

测试Hilt代码

可以使用JUnit和Mockito来测试Hilt代码。例如:

@RunWith(AndroidJUnit4::class)
class MyActivityTest {

  @Rule
  @JvmField
  var activityRule = ActivityScenarioRule(MyActivity::class.java)

  @Test
  fun testViewModelInjection() {
    activityRule.scenario.onActivity { activity ->
      val viewModel = activity.viewModel
      assertNotNull(viewModel)
    }
  }

  ...
}

结语

Android Hilt是一款简单易用、功能强大的依赖注入框架。它可以帮助Android开发人员更轻松地构建模块化和可测试的代码。如果你正在寻找一款依赖注入框架,那么Android Hilt是一个不错的选择。