在 Hilt 的 ApplicationComponent 注解中添加一个 modules 参数,将提供此方法的模块添加到其中。例如:
@HiltAndroidApp
class MyApplication : Application()
@Module
@InstallIn(ApplicationComponent::class)
object MyModule {
@Provides
fun provideMyDependency(): MyDependency {
return MyDependencyImpl()
}
}
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
@Inject lateinit var myDependency: MyDependency
// ...
}
在这个示例中,MyModule 提供一个 MyDependency 实例,该实例在 MyActivity 中使用。要让 Hilt 能够识别此 @Provides 方法,我们需要将 MyModule 添加到 ApplicationComponent 的模块列表中:
@HiltAndroidApp
class MyApplication : Application()
@Module
@InstallIn(ApplicationComponent::class)
object MyModule {
@Provides
fun provideMyDependency(): MyDependency {
return MyDependencyImpl()
}
}
// 在 ApplicationComponent 注解中添加 modules
@Singleton
@Component(modules = [MyModule::class])
interface ApplicationComponent : AndroidInjector {
// ...
}
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
@Inject lateinit var myDependency: MyDependency
// ...
}
现在,Hilt 将能够识别并注入 MyDependency 实例。