@Singleton 注释 class 在 Kotlin 中使用 Dagger2 创建多个实例
@Singleton annotated class creates multiple instances with Dagger2 in Kotlin
我有一个 class 像这样用 @Singleton 注释:
@Singleton
class SomeClass @Inject constructor() { ... }
我在其他 class 中像这样使用它:
class OtherClass {
@Inject
lateinit var someclass: SomeClass
init { DaggerAppComponent.create().inject(this) }
}
@Component
@Singleton
interface AppComponent {
fun inject(otherClass: OtherClass)
}
但是我在注入 SomeClass 的每个 class 中得到不同的实例。我做错了什么?
通过在 OtherClass
init{}
块中调用 DaggerAppComponent.create()
,您始终会为每个 OtherClass
实例创建一个新的 DaggerAppComponent
。
您应该将您的组件缓存在您的应用程序范围内,以使那些 @Singleton
注释对您有效。
我认为 Application
class 是这样做的好地方。你可以找到一个小例子 here.
我有一个 class 像这样用 @Singleton 注释:
@Singleton
class SomeClass @Inject constructor() { ... }
我在其他 class 中像这样使用它:
class OtherClass {
@Inject
lateinit var someclass: SomeClass
init { DaggerAppComponent.create().inject(this) }
}
@Component
@Singleton
interface AppComponent {
fun inject(otherClass: OtherClass)
}
但是我在注入 SomeClass 的每个 class 中得到不同的实例。我做错了什么?
通过在 OtherClass
init{}
块中调用 DaggerAppComponent.create()
,您始终会为每个 OtherClass
实例创建一个新的 DaggerAppComponent
。
您应该将您的组件缓存在您的应用程序范围内,以使那些 @Singleton
注释对您有效。
我认为 Application
class 是这样做的好地方。你可以找到一个小例子 here.