Как иметь только один экземпляр Dagger @subcomponent? - PullRequest
2 голосов
/ 06 ноября 2019

Для других зависимостей я могу использовать @scope, например @Singleton, чтобы у него был только один экземпляр.

Например:

@Component
@Singleton
interface ApplicationComponent {

    fun getMySingleInstanceDependency(): MySingleInstanceDependency
}

@Singleton
class MySingleInstanceDependency @Inject constructor()

Если я добавлю @subcomponent кОсновной компонент, он возвращает новый экземпляр каждый раз, когда мне требуется экземпляр. Единственное, о чем я могу думать, - это использовать @ Component.Builder для передачи экземпляра подкомпонента внутрь, чтобы он каждый раз использовал один и тот же экземпляр, но это звучит неправильно. Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 06 ноября 2019

Вы говорите о другом вопросе. Жизненный цикл экземпляра объекта не должен иметь ничего общего с subcomponent. Позвольте мне объяснить ваш вопрос.

  1. По умолчанию все зависимости создаются с вашей аннотацией provide. Который будет вызываться каждый раз, когда мы запрашиваем этот предмет в другом Кинжале modules. Если , эта конкретная зависимость аннотируется как singleton.

  2. Ваш подкомпонент не должен иметь ничего общего с вышеуказанным распределением. В основном у вас будет один (или несколько) кинжал component, который может включать subcomponent. Их жизненный цикл обрабатывается Dagger scope .

...