Dagger Component, Subcomponent, Scope, Reusable

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 81

  • @PandaTop.
    @PandaTop. 3 года назад +36

    Чувак, ты просто ТОП!

  • @Polurival
    @Polurival 3 года назад +12

    спасибо! это видео улучшило мое понимание про работу с зависимостями и про скоупы

  • @kafychannel
    @kafychannel 3 года назад +3

    Спасибо за новое видео, Кирилл!

  • @andrii_gepbl4_from_deddom
    @andrii_gepbl4_from_deddom 3 года назад +2

    Спасибо за урок
    Как раз было несколько моментов которые я не знал во время прошлых интервью.
    Теперь позакрывал пробелы)

  • @kirill6020
    @kirill6020 3 года назад +2

    Спасибо за видео!

  • @kafychannel
    @kafychannel 2 года назад +1

    Thank you . It was very useful!

  • @ilnuryulaev7533
    @ilnuryulaev7533 3 года назад +1

    огонь выпуск

  • @andry_sh
    @andry_sh 3 года назад +2

    Благодарю Кирилл! Кратко, понятно и все по делу! Удачный формат подачи материала. Гораздо понятнее чем на платных курсах что я проходил ранее.
    Пожалуйста удели побольше внимания жц компонентов в будущих уроках, как и когда их билдить, где хранить и когда убивать. Если это вопрос архитектуры и нет единого мнения, освети пару подходов на выбор.

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Я покажу это в рамках многомодульного приложения и Hilt. Там будет с конкретными примерами.

  • @MedTechniQ
    @MedTechniQ 3 года назад +1

    огонь!

  • @KudashovDev
    @KudashovDev 3 года назад

    Как всегда топ!

  • @alexo3630
    @alexo3630 3 года назад +3

    Спасибо за видео!
    @Singleton vs @Reusable добавлю еще одно пояснение, можно посмотреть какой код они генерируют.
    @Singleton - double checked singleton с использованием synchronized
    @Reusable - простой singleton

  • @vooolff8091
    @vooolff8091 3 года назад

    Круто, я только учусь андроиду, по началу вообще не понял что тут и как, но сделал в учебном приложении как показано и всё работает! Спасибо!)

  • @Relax-4-Relax
    @Relax-4-Relax 8 месяцев назад

    спасибо(пока очень тежело) хотел попечатать но тут сразу в бой ))

  • @edm-ko2017
    @edm-ko2017 3 года назад +1

    Спаcибо! Отличный ролик

  • @Alexey112
    @Alexey112 3 года назад +4

    в следующем ролике было бы неплохо показать жизненный цикл фича компонента, это неоднозначная тема

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +1

      5ый урок будем посвящен модуляризации, Там и будет освещаться тема. Но это архитектура и очень неоднозначен взгляд на это

  • @druce18
    @druce18 3 года назад

    Спасибо!

  • @user-sankarsana
    @user-sankarsana 3 года назад +2

    Крутотень!
    Только про сабКомпоненты не совсем понял, когда их нужно использовать?
    Или их вообще лучше не использовать? Депенденсис хватает.

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Сабкомпоненты можно использовать всегда, чтобы явно не пробрасывать зависимости между компонентами. Либо когда у вас есть разные временные жизни для зависимостей.

  • @PigManPig
    @PigManPig 10 месяцев назад

    Насчет Reusable он какое-то странное пояснение дал, типа нет гарантии.. если 2 раза запросите.. какое-то время хранит.. Короче, почитал статьи, работает так:
    @Reusable - аннотация похожа на обычный @Scope, но действует в рамках одного компонента. То есть, при такой иерархии:
    Component (провайдит A)
    Subcomponent_1 (инжектит в Frag_1)
    Subcomponent_2 (инжектит в Frag_2 и Frag_3)
    Объект А будет создан
    ► без использования аннотаций: 3 раза
    ► c испольозованием @Scope: 1 раз
    ► с испольозованием @Reusable: 2 раза

  • @АнтонЩербаков-в9ч
    @АнтонЩербаков-в9ч 3 года назад +1

    Супер. А hilt и dagger-android планируешь в рамках этих сессий рассказать?

  • @sokolovayuliia
    @sokolovayuliia 2 года назад

    Спасибо за видео) а FeatureComponent (не сабкомпонент) можно использовать для построения Dynamic Feature? Чтоб модуль подгрузился позже, по необходимости

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад

      Да, зависимости компонентов не имеют завезут на код из модулей куда подключаются. Поэтому для dynamic feature этот способ будет работать

  • @zmeytee
    @zmeytee 3 года назад

    Спасибо за видео. По dependencies видел уже такой вариант, но пока не понял зачем промежуточный интерфейс нужен..

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +2

      Когда компоненты в отдельных модулях, только один знать о другом может. И обычно это AppComponent знает о FeatureComponent. Промежуточный интерфейс добавляется возле FeatureComponent, чтобы описать требования к входящим зависимостям и не знать об AppComponent.

    • @zmeytee
      @zmeytee 3 года назад

      Спасибо. Вроде понял. На практике попробую.
      Как я понял это из-за того, что feature модуль не знает про app, и собственно не знает про AppComponent.

  • @UCfpBnsCG17QVj5bLvbBjBrQ
    @UCfpBnsCG17QVj5bLvbBjBrQ 2 года назад

    Вопрос про ту часть видео где речь идет о сабкомпонентах:
    Зачем в аннотации @Module() нужно указывать subcomponents = [FeatureComponent::class] ? Без этого все прекрасно работает вроде

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад

      Да работает, но тогда он не добавляется как сабкомпонент к компоненты, где подключен модуль

  • @ВераЮрьева-м5ш
    @ВераЮрьева-м5ш 2 года назад

    Спасибо за урок! Но не совсем раскрыта тема "жесткой связи" между компонентом и сабкомпонентом. Ну генерируется инстанс класса внутрь другого класса, почему это плохо?

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад

      Проблема в том что при любом изменение будет меняться сгенерированный исходник на Java, что приводит к повторной компиляции всего в файле (

  • @user-fc9gt6dl2i
    @user-fc9gt6dl2i 3 года назад

    У меня два вопроса появилось:
    1) Чтобы при повороте экрана презенторы не инжектились повторно их нужно держать в AppComponent?
    2) В BottomNavigationView есть скоуп для пары фрагментов одного таба, его компонент должен переживать поворот экрана, значит его надо храниться в Application и при нажатии на таб создавать его, а при переходе на другой таб ставить null?

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      1) Мне кажется под словом "инджектались" вы понимаете создание зависимости?
      2) Местом хранения может выступить Activity или Fragment, где это NavView расположен. Да, придется вам его чистить руками, либо привязаться к каким-то Callback. Например, можно отслеживать переключение элементов в NavView

    • @user-fc9gt6dl2i
      @user-fc9gt6dl2i 3 года назад

      @@AndroidBroadcast Да, создание зависимостей. В презенторе работает интерактор, экран поворачивается и создаётся новый презентер с новым интерактором, мне нужно, чтобы оставался старый презентор, значит компонент хранящий презенторы должен быть в Application?

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      @@user-fc9gt6dl2i Необязательно в Application. Главное чтобы это было там где он будет жить дольше чем ваш Fragment в табе NavView

    • @user-fc9gt6dl2i
      @user-fc9gt6dl2i 3 года назад

      @@AndroidBroadcast Спасибо!

  • @y2kot
    @y2kot 3 года назад +1

    Не очень понял где начинается, а где заканчивается жизненный цикл пользовательского scope

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Scope - это связка с Component, который кэширует все Scoped зависимости. Пока вы храните Component в памяти, хранятся и Scoped зависимости

    • @y2kot
      @y2kot 3 года назад

      @@AndroidBroadcast можно на пальцах? У меня есть активити с вьюмоделью. У них есть зависимости. Как мне описать компонент чтобы он жил пока жива активити?

    • @kamanchomorgan9655
      @kamanchomorgan9655 2 года назад

      @@y2kot привет, ты разобралался как это сделать?

  • @andrew3937
    @andrew3937 2 года назад

    Hilt все еще завязан на сабкомпонентах или это уже пофиксили за год?

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад +1

      Да, все также

    • @andrew3937
      @andrew3937 2 года назад

      @@AndroidBroadcast Спасибо за ответ

  • @stanislavkorolev376
    @stanislavkorolev376 3 года назад

    viewModel aфабрике scope нужен ?

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад

      Тут опять надо отталкивать от того, объект это с состоянием или без. Обычно фабрика не должна быть scoped зависимость

  • @telephon3208
    @telephon3208 2 года назад

    это всё базовые вещи или уже продвинутый уровень использования? пытаюсь понять насколько мне надо все это запоминать

    • @AndroidBroadcast
      @AndroidBroadcast  2 года назад

      Это базовые вещи, их точно надо знать

    • @voicetv9048
      @voicetv9048 2 года назад

      @@AndroidBroadcast А можно сразу продвинутый уровень ? Просто не могу приставить какой будет продвинутый, если это базовые вещи ))

  • @asp424
    @asp424 3 года назад +2

    УРА!!!!!! Compose вышел. Пишу на нем уже неделю и ненарадуюсь: фрагменты, xml, binding, обнулить observer, binding, onViewCreated......- тьфу, в помойку этот шлак!!!!

  • @VolodymyrBabenko-w7j
    @VolodymyrBabenko-w7j 3 года назад

    А ветки в репеозитрии нету?

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +2

      Нет, подолью позже. И так с видосом получилось долго

    • @AndroidBroadcast
      @AndroidBroadcast  3 года назад +3

      Добавил

  • @telephon3208
    @telephon3208 Год назад

    у кого-нить есть конспектик?

  • @d.mertsalov
    @d.mertsalov 3 года назад +1

    Спасибо!

  • @sergeyjoke
    @sergeyjoke Год назад

    Спасибо!