@Singleton带注释的类在Kotlin中使用Dagger2创建了多个实例

时间:2019-09-22 14:22:31

标签: kotlin singleton dagger-2

我有一个用@Singleton注释的类,如下所示:

@Singleton
class SomeClass @Inject constructor() { ... }

并且我在其他这样的类中使用它:

class OtherClass {
  @Inject 
  lateinit var someclass: SomeClass
  init { DaggerAppComponent.create().inject(this) }
}

@Component
@Singleton
interface AppComponent {
  fun inject(otherClass: OtherClass)
}

但是我在每个将SomeClass注入的类中都有不同的实例。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

通过在DaggerAppComponent.create() OtherClass块中调用init{},您总是为每个DaggerAppComponent实例创建一个新的OtherClass。 您应该将组件缓存在应用程序范围内,以使那些@Singleton注释对您有效。

我认为Application类是这样做的好地方。您可以找到一个小例子here