Size: a a a

2019 September 05

DN

Danil Novoselov in Dagger 2
получается, что application должен будет уметь предоставлять компоненты в нужную нам фичу. Разве это хорошо?
источник

D

DarkPerl in Dagger 2
Я так понял, что в Application надо добавлять только то, что должно пережить жизненный цикл Activity
источник

IG

Ilya Gulya in Dagger 2
Ну тут просто ситуация со смертью приложения.
В случае с getInstance() такого не будет.
источник

IG

Ilya Gulya in Dagger 2
По факту, нет особой разницы, где будет находиться точка входа в граф зависимостей.
источник

IG

Ilya Gulya in Dagger 2
Кто-то делает в Application, кто-то отдельный синглтон.
источник

IG

Ilya Gulya in Dagger 2
Кто-то юзает Dagger Android и не нарушает IoC 🙂
источник

DN

Danil Novoselov in Dagger 2
Еще Цховребов предлагал FlowFragment'ы
источник

SV

Sviat Volkov in Dagger 2
апликейшн просто держит ссылку на компоненту чтобы ее не почистило, криминала тут нет 😉 . пример не имеет отношения к реальности, т.к. апп компоненту всегда надо инитить через дабл чек как пример - by lazy{} в котлине
источник

DN

Danil Novoselov in Dagger 2
Sviat Volkov
апликейшн просто держит ссылку на компоненту чтобы ее не почистило, криминала тут нет 😉 . пример не имеет отношения к реальности, т.к. апп компоненту всегда надо инитить через дабл чек как пример - by lazy{} в котлине
а что если внутреннее состояние компоненты поменяется? Например, ты туда передовал объект по ссыле, но через какое-то время инстанс этого объекта поменялся. Что будет возвращать by lazy {} ??
источник

SV

Sviat Volkov in Dagger 2
как сказал Илья разница никакой нету. ссылка в апликешйне или отдельный класс-синглтон
источник

SV

Sviat Volkov in Dagger 2
я в компоненту после build() ничего не передаю. я только прошу у нее. компонента иммутабельна
источник

DN

Danil Novoselov in Dagger 2
ну, бывают же ситуации, когда компоненты нужно перебилдить
источник

SV

Sviat Volkov in Dagger 2
это не имеет отношения к вопросу где хранить компоненту.
источник

DN

Danil Novoselov in Dagger 2
имеет )) В том смысле, что можно было бы разделить ответственность. И какой-нибудь условный менеджер мог разруливать ситуацию хранения и контроля инстантса твоей компоненты
источник

DN

Danil Novoselov in Dagger 2
Или вы считаете, что все дело во вкусовщине?
источник

SV

Sviat Volkov in Dagger 2
да, делай как удобно. я допустим делаю через апликейшн, и когда собираю компоненты для фрагментов \ активити работаю с activity.application и достаю оттуда аппкомпоненту. кому-то красивее статик метод DIManager.getAppComponent()
источник

K

Konstantin in Dagger 2
Danil Novoselov
имеет )) В том смысле, что можно было бы разделить ответственность. И какой-нибудь условный менеджер мог разруливать ситуацию хранения и контроля инстантса твоей компоненты
выглядит как переусложнение, но все зависит от размера проекта и команды
источник
2019 September 06

SY

Sergey Yzenev in Dagger 2
Все привет, с даггеров начал возиться недавно. И вот столкнулся со след. проблемой: не получается прокинуть один и тот же инстанс Router'а во FlowFragment (контейнер) и в AuthFragment (точнее в его AuthPresenter). Придерживаюсь Single-Activity, а навигацию разруливаю с помощью Cicerone. Есть 3 scope (Singleton, FlowFragmentScope, FragmentScope) и 3 компонента к ним AppComponent <- FlowComponent <- AuthComponent. AppComponent определяет Named("global") NavHolder и Named("global") Router. Его сабкомпонент FlowComponent определяет Named("flow") NavHolder и Named("flow") Router. Его же сабкомпонент AuthComponent определяет AuthPresenter(interactor, @Named("flow") Router), который вроде как должен цеплять Router из FlowComponent. Но приходит другой инстанс. Кажись я чет не понял связанное со scope
источник

AK

Alexey Kalyaganov in Dagger 2
Sergey Yzenev
Все привет, с даггеров начал возиться недавно. И вот столкнулся со след. проблемой: не получается прокинуть один и тот же инстанс Router'а во FlowFragment (контейнер) и в AuthFragment (точнее в его AuthPresenter). Придерживаюсь Single-Activity, а навигацию разруливаю с помощью Cicerone. Есть 3 scope (Singleton, FlowFragmentScope, FragmentScope) и 3 компонента к ним AppComponent <- FlowComponent <- AuthComponent. AppComponent определяет Named("global") NavHolder и Named("global") Router. Его сабкомпонент FlowComponent определяет Named("flow") NavHolder и Named("flow") Router. Его же сабкомпонент AuthComponent определяет AuthPresenter(interactor, @Named("flow") Router), который вроде как должен цеплять Router из FlowComponent. Но приходит другой инстанс. Кажись я чет не понял связанное со scope
Как поняли что другой инстанс? Какой инстанс должен был быть?
В компоненте роутар создается с привязкой к скоупу?
FlowComponent и AuthComponent как создаются?
источник

SY

Sergey Yzenev in Dagger 2
Alexey Kalyaganov
Как поняли что другой инстанс? Какой инстанс должен был быть?
В компоненте роутар создается с привязкой к скоупу?
FlowComponent и AuthComponent как создаются?
В логах разные хэш коды у объектов. Экземпляр Router'а относящийся к AuthFragment должен быть должен быть тем же что и у FlowFragment.
источник