Тёмный

Dagger Component, Subcomponent, Scope, Reusable 

Android Broadcast. Все об Андроид разработке
Просмотров 26 тыс.
50% 1

Говорим про то как создавать Component в Dagger, что такое Scope и как они влияют на хранение зависимостей и способы связи между Component
💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon / android_broadcast
🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast
🔗 Документация по Dagger dagger.dev/dev-guide/
🔗 Dagger Subcomponent dagger.dev/dev-guide/subcompo...
📺 Курс по Dagger 2 clck.ru/VtY7d
🔗 Код из видео bit.ly/3ztfT7l
Видео сделано при поддержке Лаборатории Касперского
#AndroidBroadcast #DaggerКурс #Dagger2 #DI #DependncyInjection #Hilt #DaggerHilt #КириллРозов #РозовКирилл #component #subcomponent
0:00 Вступление
0:34 Создание Component
2:19 Добавление зависимостей в граф при создании
5:03 Зависимости в Component
7:35 Scope
10:27 Lazy vs Scope зависимости
13:03 Reusable Scope - экономия расхода памяти
14:26 Subcomponent
19:03 Альтернативные способы зависимостей между Component
21:44 Заключение

Наука

Опубликовано:

 

25 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 81   
@PandaTop.
@PandaTop. 2 года назад
Чувак, ты просто ТОП!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Спасибо
@nickolasivantsov260
@nickolasivantsov260 2 года назад
Вот прям лучше и не скажешь!
@Polurival
@Polurival 2 года назад
спасибо! это видео улучшило мое понимание про работу с зависимостями и про скоупы
@kafychannel
@kafychannel 2 года назад
Спасибо за новое видео, Кирилл!
@andrii_gepbl4_from_deddom
@andrii_gepbl4_from_deddom 2 года назад
Спасибо за урок Как раз было несколько моментов которые я не знал во время прошлых интервью. Теперь позакрывал пробелы)
@kirill6020
@kirill6020 2 года назад
Спасибо за видео!
@kafychannel
@kafychannel 2 года назад
Thank you . It was very useful!
@KudashovDev
@KudashovDev 2 года назад
Как всегда топ!
@ilnuryulaev7533
@ilnuryulaev7533 2 года назад
огонь выпуск
@Relax-4-Relax
@Relax-4-Relax 28 дней назад
спасибо(пока очень тежело) хотел попечатать но тут сразу в бой ))
@d.mertsalov
@d.mertsalov 2 года назад
Спасибо!
@MedTechniQ
@MedTechniQ 2 года назад
огонь!
@edm-ko2017
@edm-ko2017 2 года назад
Спаcибо! Отличный ролик
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Спасибо!
@andry_sh
@andry_sh 2 года назад
Благодарю Кирилл! Кратко, понятно и все по делу! Удачный формат подачи материала. Гораздо понятнее чем на платных курсах что я проходил ранее. Пожалуйста удели побольше внимания жц компонентов в будущих уроках, как и когда их билдить, где хранить и когда убивать. Если это вопрос архитектуры и нет единого мнения, освети пару подходов на выбор.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я покажу это в рамках многомодульного приложения и Hilt. Там будет с конкретными примерами.
@vooolff8091
@vooolff8091 2 года назад
Круто, я только учусь андроиду, по началу вообще не понял что тут и как, но сделал в учебном приложении как показано и всё работает! Спасибо!)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
🔥🔥🔥🔥
@user-fm2jm2yd5n
@user-fm2jm2yd5n 2 года назад
Супер. А hilt и dagger-android планируешь в рамках этих сессий рассказать?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
6 лекция будет
@Alexey112
@Alexey112 2 года назад
в следующем ролике было бы неплохо показать жизненный цикл фича компонента, это неоднозначная тема
@AndroidBroadcast
@AndroidBroadcast 2 года назад
5ый урок будем посвящен модуляризации, Там и будет освещаться тема. Но это архитектура и очень неоднозначен взгляд на это
@PigManPig
@PigManPig 3 месяца назад
Насчет Reusable он какое-то странное пояснение дал, типа нет гарантии.. если 2 раза запросите.. какое-то время хранит.. Короче, почитал статьи, работает так: @Reusable - аннотация похожа на обычный @Scope, но действует в рамках одного компонента. То есть, при такой иерархии: Component (провайдит A) Subcomponent_1 (инжектит в Frag_1) Subcomponent_2 (инжектит в Frag_2 и Frag_3) Объект А будет создан ► без использования аннотаций: 3 раза ► c испольозованием @Scope: 1 раз ► с испольозованием @Reusable: 2 раза
@user-qu6mb9il6w
@user-qu6mb9il6w 2 года назад
Крутотень! Только про сабКомпоненты не совсем понял, когда их нужно использовать? Или их вообще лучше не использовать? Депенденсис хватает.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Сабкомпоненты можно использовать всегда, чтобы явно не пробрасывать зависимости между компонентами. Либо когда у вас есть разные временные жизни для зависимостей.
@zmeytee
@zmeytee 2 года назад
Спасибо за видео. По dependencies видел уже такой вариант, но пока не понял зачем промежуточный интерфейс нужен..
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Когда компоненты в отдельных модулях, только один знать о другом может. И обычно это AppComponent знает о FeatureComponent. Промежуточный интерфейс добавляется возле FeatureComponent, чтобы описать требования к входящим зависимостям и не знать об AppComponent.
@zmeytee
@zmeytee 2 года назад
Спасибо. Вроде понял. На практике попробую. Как я понял это из-за того, что feature модуль не знает про app, и собственно не знает про AppComponent.
@sokolovayuliia
@sokolovayuliia 2 года назад
Спасибо за видео) а FeatureComponent (не сабкомпонент) можно использовать для построения Dynamic Feature? Чтоб модуль подгрузился позже, по необходимости
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да, зависимости компонентов не имеют завезут на код из модулей куда подключаются. Поэтому для dynamic feature этот способ будет работать
@UCfpBnsCG17QVj5bLvbBjBrQ
@UCfpBnsCG17QVj5bLvbBjBrQ 2 года назад
Вопрос про ту часть видео где речь идет о сабкомпонентах: Зачем в аннотации @Module() нужно указывать subcomponents = [FeatureComponent::class] ? Без этого все прекрасно работает вроде
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да работает, но тогда он не добавляется как сабкомпонент к компоненты, где подключен модуль
@user-et8om7cl2j
@user-et8om7cl2j Год назад
Спасибо за урок! Но не совсем раскрыта тема "жесткой связи" между компонентом и сабкомпонентом. Ну генерируется инстанс класса внутрь другого класса, почему это плохо?
@AndroidBroadcast
@AndroidBroadcast Год назад
Проблема в том что при любом изменение будет меняться сгенерированный исходник на Java, что приводит к повторной компиляции всего в файле (
@stanislavkorolev376
@stanislavkorolev376 2 года назад
viewModel aфабрике scope нужен ?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Тут опять надо отталкивать от того, объект это с состоянием или без. Обычно фабрика не должна быть scoped зависимость
@andrew3937
@andrew3937 2 года назад
Hilt все еще завязан на сабкомпонентах или это уже пофиксили за год?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да, все также
@andrew3937
@andrew3937 2 года назад
@@AndroidBroadcast Спасибо за ответ
@user-fc9gt6dl2i
@user-fc9gt6dl2i 2 года назад
У меня два вопроса появилось: 1) Чтобы при повороте экрана презенторы не инжектились повторно их нужно держать в AppComponent? 2) В BottomNavigationView есть скоуп для пары фрагментов одного таба, его компонент должен переживать поворот экрана, значит его надо храниться в Application и при нажатии на таб создавать его, а при переходе на другой таб ставить null?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
1) Мне кажется под словом "инджектались" вы понимаете создание зависимости? 2) Местом хранения может выступить Activity или Fragment, где это NavView расположен. Да, придется вам его чистить руками, либо привязаться к каким-то Callback. Например, можно отслеживать переключение элементов в NavView
@user-fc9gt6dl2i
@user-fc9gt6dl2i 2 года назад
@@AndroidBroadcast Да, создание зависимостей. В презенторе работает интерактор, экран поворачивается и создаётся новый презентер с новым интерактором, мне нужно, чтобы оставался старый презентор, значит компонент хранящий презенторы должен быть в Application?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
@@user-fc9gt6dl2i Необязательно в Application. Главное чтобы это было там где он будет жить дольше чем ваш Fragment в табе NavView
@user-fc9gt6dl2i
@user-fc9gt6dl2i 2 года назад
@@AndroidBroadcast Спасибо!
@telephon3208
@telephon3208 2 года назад
это всё базовые вещи или уже продвинутый уровень использования? пытаюсь понять насколько мне надо все это запоминать
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Это базовые вещи, их точно надо знать
@voicetv9048
@voicetv9048 Год назад
@@AndroidBroadcast А можно сразу продвинутый уровень ? Просто не могу приставить какой будет продвинутый, если это базовые вещи ))
@y2kot
@y2kot 2 года назад
Не очень понял где начинается, а где заканчивается жизненный цикл пользовательского scope
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Scope - это связка с Component, который кэширует все Scoped зависимости. Пока вы храните Component в памяти, хранятся и Scoped зависимости
@y2kot
@y2kot 2 года назад
@@AndroidBroadcast можно на пальцах? У меня есть активити с вьюмоделью. У них есть зависимости. Как мне описать компонент чтобы он жил пока жива активити?
@kamanchomorgan9655
@kamanchomorgan9655 Год назад
@@y2kot привет, ты разобралался как это сделать?
@user-ed6ps4ol9n
@user-ed6ps4ol9n 2 года назад
А ветки в репеозитрии нету?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Нет, подолью позже. И так с видосом получилось долго
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Добавил
@telephon3208
@telephon3208 Год назад
у кого-нить есть конспектик?
@asp424
@asp424 2 года назад
УРА!!!!!! Compose вышел. Пишу на нем уже неделю и ненарадуюсь: фрагменты, xml, binding, обнулить observer, binding, onViewCreated......- тьфу, в помойку этот шлак!!!!
@alexo3630
@alexo3630 2 года назад
Спасибо за видео! @Singleton vs @Reusable добавлю еще одно пояснение, можно посмотреть какой код они генерируют. @Singleton - double checked singleton с использованием synchronized @Reusable - простой singleton
@sergeyjoke
@sergeyjoke Год назад
Спасибо!
@druce18
@druce18 2 года назад
Спасибо!
Далее
Dagger Multibindings. Plugin architecture [RU]
17:24
Просмотров 14 тыс.
Кошка-ГОНЧАР #шортс #shorts
00:28
Просмотров 405 тыс.
小路飞被臭死啦!#海贼王#路飞
00:27
Просмотров 2,3 млн
2000 vs 2100
00:15
Просмотров 17 тыс.
Миграция с LiveData на Coroutines Flow
25:02
Dependency Injection простыми словами
18:17
Dagger Hilt - Assisted Inject Hilt in Android!
9:31
Просмотров 1,1 тыс.
MVI в Android на практике
19:20
Просмотров 14 тыс.
Main filter..
0:15
Просмотров 10 млн