在 Hilt 中具有相同实现的相同类型的多个实例
Multiple Instances of the same type with same implementation in Hilt
自从 Hilt 稳定后,我就开始使用它了。我也是 DI(依赖注入)的新手。
我的问题是,如果我有一个 class,比如 AdapterA
,我想在每次它的 DI(使用 @Inject)请求它时提供一个新实例。
我使用了以下代码来提供实例,如果我需要 add/remove 任何东西以使其按预期工作,请告诉我。
// Kotlin
@Module
@InstallIn(ActivityComponent::class)
class AdapterModule {
@Provides
@ActivityScoped
fun provideAdapterAInstace(): AdapterA {
return AdapterA()
}
}
现在,每当我尝试在 activity 中多次注入依赖项时,它总是 returns 相同的实例(就像 static
存储一次并重复使用的变量无数次。
// Usage
class ActivityA extends AppCompatActivity {
@Inject
lateinit var instanceOne: AdapterA
@Inject
lateinit var instanceTwo: AdapterA
...
}
帮助我了解我在这里做错了什么或错过了什么。
提前致谢。
作用域注解告诉 Dagger 只在具有该作用域的组件中创建一个实例。在这种情况下,这意味着每个 activity 只会创建一次 AdapterA
。如果您想每次都创建一个 AdapterA
的新实例,请不要提供范围。
@Module
@InstallIn(ActivityComponent::class)
class AdapterModule {
@Provides
// unscoped
fun provideAdapterAInstance(): AdapterA {
return AdapterA()
}
}
自从 Hilt 稳定后,我就开始使用它了。我也是 DI(依赖注入)的新手。
我的问题是,如果我有一个 class,比如 AdapterA
,我想在每次它的 DI(使用 @Inject)请求它时提供一个新实例。
我使用了以下代码来提供实例,如果我需要 add/remove 任何东西以使其按预期工作,请告诉我。
// Kotlin
@Module
@InstallIn(ActivityComponent::class)
class AdapterModule {
@Provides
@ActivityScoped
fun provideAdapterAInstace(): AdapterA {
return AdapterA()
}
}
现在,每当我尝试在 activity 中多次注入依赖项时,它总是 returns 相同的实例(就像 static
存储一次并重复使用的变量无数次。
// Usage
class ActivityA extends AppCompatActivity {
@Inject
lateinit var instanceOne: AdapterA
@Inject
lateinit var instanceTwo: AdapterA
...
}
帮助我了解我在这里做错了什么或错过了什么。 提前致谢。
作用域注解告诉 Dagger 只在具有该作用域的组件中创建一个实例。在这种情况下,这意味着每个 activity 只会创建一次 AdapterA
。如果您想每次都创建一个 AdapterA
的新实例,请不要提供范围。
@Module
@InstallIn(ActivityComponent::class)
class AdapterModule {
@Provides
// unscoped
fun provideAdapterAInstance(): AdapterA {
return AdapterA()
}
}