在 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()
    }
}