如何只有一个 Dagger @subcomponent 实例?
How to only have one instance of a Dagger @subcomponent?
对于其他依赖项,我可以使用@scope,例如@Singleton,使其只有一个实例。
例如:
@Component
@Singleton
interface ApplicationComponent {
fun getMySingleInstanceDependency(): MySingleInstanceDependency
}
@Singleton
class MySingleInstanceDependency @Inject constructor()
如果我向主组件添加一个@subcomponent,它会在每次我需要一个实例时returns一个新实例。我唯一能想到的是使用@Component.Builder 将子组件的实例传递到内部,这样它每次都使用相同的实例,但这听起来不对。有更好的方法吗?
你说的是不同的问题。对象实例的生命周期应该与 subcomponent
无关。让我在这里解释你的问题。
默认情况下,所有依赖项都是使用您的 provide
注释创建的。每次我们在不同的 Dagger modules
中请求这个项目时都会被调用。 除非 将此特定依赖项注释为singleton
。
你的子组件应该与上面的分配无关。
基本上你会有一把(或几把)Dagger component
,其中可能包括 subcomponent
。它们的生命周期由 Dagger scope 处理。
对于其他依赖项,我可以使用@scope,例如@Singleton,使其只有一个实例。
例如:
@Component
@Singleton
interface ApplicationComponent {
fun getMySingleInstanceDependency(): MySingleInstanceDependency
}
@Singleton
class MySingleInstanceDependency @Inject constructor()
如果我向主组件添加一个@subcomponent,它会在每次我需要一个实例时returns一个新实例。我唯一能想到的是使用@Component.Builder 将子组件的实例传递到内部,这样它每次都使用相同的实例,但这听起来不对。有更好的方法吗?
你说的是不同的问题。对象实例的生命周期应该与 subcomponent
无关。让我在这里解释你的问题。
默认情况下,所有依赖项都是使用您的
provide
注释创建的。每次我们在不同的 Daggermodules
中请求这个项目时都会被调用。 除非 将此特定依赖项注释为singleton
。你的子组件应该与上面的分配无关。 基本上你会有一把(或几把)Dagger
component
,其中可能包括subcomponent
。它们的生命周期由 Dagger scope 处理。