Size: a a a

2020 March 07

i

ilya the 大佬 in Dagger 2
а есть пример? чет искал везде, так и не нашел
источник

М

Михаил in Dagger 2
Но тема для чатика по тузпику)
источник

i

ilya the 大佬 in Dagger 2
ссыль
источник

М

Михаил in Dagger 2
источник

i

ilya the 大佬 in Dagger 2
спасибо
источник
2020 March 08

S

Shieldy in Dagger 2
温逸彬, пожалуйста, нажмите на кнопку ниже в течение указанного времени, иначе вы будете кикнуты. Спасибо! (60 сек)
источник

TT

Turalllb Turalll in Dagger 2
Добрый день, давно с дагером не работал, помогите вспомнить. Вот есть у меня в апп модуле провайдер такой                         @Singleton
   @Provides
   DataBaseManager provideDataBaseManager() {
       return new DataBaseManager(context, provideSharedPreferencesService());
   }      Для sharedPreferense тоже описан синглтон провайдер. Ну и контекст провайдится. Т.е. я могу не описывать текущий провайдер, так как все данные для его авотматического создания у дагера есть. Но будет ли он в этом случае синглтоном ? И есть ли возможность это описать не описывая провайдер?  Может при самом инжекте указать можно что синглтон жду? Но тогда кто то в другом классе попросит не синглтон и получит новый экземпляр, а я этого не хочу.
источник

TT

Turalllb Turalll in Dagger 2
Ну и второй вопрос, я хочу чтобы еще при инициализации аппМодуля, это основной модуль приложения, был иницализирован и класс DataBaseManager, так как при его инициализации происходит обновление баз данных.   Как я понял, если у меня есть хоть один провайдер, который в конструктор ждет DataBaseManager, то этот класс будет проинициализиван в билдере аппликейшен, иначе нет. верно ли я это понимаю?
источник
2020 March 09

DZ

Dmitry Zhgun in Dagger 2
Товарищи! Поясните, пожалуйста, чего я упускаю.
Есть модули(gradle) core, network и, собственно, app.

Все модули зависят от core.

Каким образом сделать Inject в классы без своего контекста, если создание CoreComponent требует этого самого контекста, он пробрасывается в Application классе, который находится в app-модуле и, следовательно, не виден в низлежащих модулях.

Зачем вообще тогда несколько компонентов, если ты не можешь прокинуть Context вниз?
источник

i

ilya the 大佬 in Dagger 2
Dmitry Zhgun
Товарищи! Поясните, пожалуйста, чего я упускаю.
Есть модули(gradle) core, network и, собственно, app.

Все модули зависят от core.

Каким образом сделать Inject в классы без своего контекста, если создание CoreComponent требует этого самого контекста, он пробрасывается в Application классе, который находится в app-модуле и, следовательно, не виден в низлежащих модулях.

Зачем вообще тогда несколько компонентов, если ты не можешь прокинуть Context вниз?
а я в мультимодульном приложении весь DI храню в app, но хз хорошая ли это практика
источник

DZ

Dmitry Zhgun in Dagger 2
ilya the 大佬
а я в мультимодульном приложении весь DI храню в app, но хз хорошая ли это практика
У меня, наверное, даже лучше так будет - ибо почти все живет весь жизненный цикл приложения.
источник

DZ

Dmitry Zhgun in Dagger 2
Просто сам подход непонятен
источник

DZ

Dmitry Zhgun in Dagger 2
Получается, все контекст-зависимые классы мне надо вынести в App-модуль
источник

DZ

Dmitry Zhgun in Dagger 2
и подключать остальное через модули а не через зависимые компоненты
источник

DZ

Dmitry Zhgun in Dagger 2
?
источник

i

ilya the 大佬 in Dagger 2
Dmitry Zhgun
Получается, все контекст-зависимые классы мне надо вынести в App-модуль
Нет, контекстнозависимые классы можно в отдельный модуль тоже, просто даггер, находящийся в app будет пробрасывать им контекст. Но надо во всех тех модулях нужные Gradle зависимости даггера добавить, чтобы factory классов даггер генерировал в модуле, в котором находится класс, а не в app
источник

i

ilya the 大佬 in Dagger 2
опять же уточню, что не эксперт в этом плане) но это вроде самый изишный подход
источник

DZ

Dmitry Zhgun in Dagger 2
ilya the 大佬
Нет, контекстнозависимые классы можно в отдельный модуль тоже, просто даггер, находящийся в app будет пробрасывать им контекст. Но надо во всех тех модулях нужные Gradle зависимости даггера добавить, чтобы factory классов даггер генерировал в модуле, в котором находится класс, а не в app
Не совсем понял.

У меня есть CoreModule и CoreComponent, через которые я получаю контекст и SharedPreferences.
Они расположены в core-модуле Gradle.
Есть NetworkModule и NetworkComponent, которые нужны для создания ClientManager'а, которому, в свою очередь, нужны контекст и shared prefs.

Проблема в том, что инициализируется все это в app-модуле gradle, о котором ничего не знают ни Network, ни Core модули Gradle и когда я в классе
ClientManager'а говорю  DaggerNetworkComponent.builder().build().inject(this); он намекает, что без CoreComponent не инжектнет, а для него нужен контекст, а его не достать из этого модуля никак.
источник

SV

Sergey Vasilchenko in Dagger 2
так а что мешает прокинуть контекст в нижележащие модули?
источник

DZ

Dmitry Zhgun in Dagger 2
Sergey Vasilchenko
так а что мешает прокинуть контекст в нижележащие модули?
Ну, то, что контекст я достаю из Application класса, а его эти модули знать не знают
источник