Kotlin 如何仅拥有Dagger@子组件的一个实例?

Kotlin 如何仅拥有Dagger@子组件的一个实例?,kotlin,dagger,Kotlin,Dagger,对于其他依赖项,我可以使用@scope,比如@Singleton,使其只有一个实例 例如: @Component @Singleton interface ApplicationComponent { fun getMySingleInstanceDependency(): MySingleInstanceDependency } @Singleton class MySingleInstanceDependency @Inject constructor() 如果我将@subco

对于其他依赖项,我可以使用@scope,比如@Singleton,使其只有一个实例

例如:

@Component
@Singleton
interface ApplicationComponent {

    fun getMySingleInstanceDependency(): MySingleInstanceDependency
}

@Singleton
class MySingleInstanceDependency @Inject constructor()

如果我将@subcomponent添加到主组件中,那么每当我需要一个实例时,它都会返回一个新实例。我能想到的唯一一件事是使用@Component.Builder在内部传递子组件的实例,这样它每次都使用相同的实例,但这听起来并不正确。有更好的方法吗?

你们在谈论不同的问题。对象实例的生命周期应该与
子组件
无关。让我在这里解释你的问题

  • 默认情况下,所有依赖项都是使用
    provide
    注释创建的。每次我们在不同的Dagger
    模块中请求此项时,都会调用它除非此特定依赖项被注释为
    singleton

  • 您的子组件应该与上述分配无关。 基本上你会有一个(或几个)匕首
    组件
    ,其中可能包括
    子组件
    。它们的生命周期由管理者处理