我有一个用@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注入的类中都有不同的实例。我在做什么错了?
答案 0 :(得分:1)
通过在DaggerAppComponent.create()
OtherClass
块中调用init{}
,您总是为每个DaggerAppComponent
实例创建一个新的OtherClass
。
您应该将组件缓存在应用程序范围内,以使那些@Singleton
注释对您有效。
我认为Application
类是这样做的好地方。您可以找到一个小例子here。