Аннотированный класс @Singleton создает несколько экземпляров с помощью Dagger2 в Kotlin - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть класс, аннотированный @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 Ответ

1 голос
/ 22 сентября 2019

Вызывая DaggerAppComponent.create() в блоке OtherClass init{}, вы всегда создаете новый DaggerAppComponent с каждым экземпляром OtherClass.Вы должны кэшировать свой компонент в своей области приложения, чтобы эти аннотации @Singleton были эффективными для вас.

Я думаю, класс Application является хорошим местом для этого.Вы можете найти небольшой пример здесь .

...