Тёмный

Android Hilt на практике с MVVM 

Тимофей Коваленко
Подписаться 8 тыс.
Просмотров 13 тыс.
50% 1

Рассказываю простыми словами про Android Hilt на практике. Показываю реальный пример в коде с архитектурой Clean Architecture (Чистая архитектура), а так же разбираем, как использовать Dagger Hilt MVVM.
Индивидуальные курсы по Android: ✅ KIPARO.COM.
Документация по Hilt:
dagger.dev/hilt/
developer.android.com/trainin...
СОДЕРЖАНИЕ:
00:00:00 - введение
00:00:50 - подключаем Hilt dependency injection
00:02:16 - создаем App класс для Hilt
00:04:05 - создаем модули Hilt
00:09:32 - аннотация для ViewModel (MVVM)
00:10:25 - аннотация для Activity
00:11:33 - аннотация InstallIn для модулей в Hilt DI
00:13:28 - полный обзор примера на практике
00:15:30 - запускаем пример с Hilt, MVVM и clean architecture
В плейлисте есть видео по MVVM и clean architecture.
Так же, найти меня можно вот тут:
✅ Linkedin: / timofeykovalenko
✅ Instagram: / ttimofey
✅ На моем сайте: kiparo.com/teacher/timofey-ko...
✅ FB с анонсами видео: / kiparocom
#android #hilt #kiparo

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

 

29 июн 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
СОДЕРЖАНИЕ: 00:00:00 - введение 00:00:50 - подключаем Hilt dependency injection 00:02:16 - создаем App класс для Hilt 00:04:05 - создаем модули Hilt 00:09:32 - аннотация для ViewModel (MVVM) 00:10:25 - аннотация для Activity 00:11:33 - аннотация InstallIn для модулей в Hilt DI 00:13:28 - полный обзор примера на практике 00:15:30 - запускаем пример с Hilt, MVVM и clean architecture
@kenchukkk
@kenchukkk 9 месяцев назад
супер! спасибо за понятные и разжеванные обьяснения, хотелось бы видео про многопоточность: Coroutines, RxJava
@lirjarmuhametova8516
@lirjarmuhametova8516 Год назад
Отличный курс! Тимофей, у Вас талант объяснять сложные вещи. Спасибо большое 👍🔥
@andriyshatynskyy5214
@andriyshatynskyy5214 2 года назад
Спасибо за уроки!!!
@moni_panica
@moni_panica Год назад
Очень полезное видео, особенно после того, как прочёл документацию, сделал кодлабу и все равно мало что понял. А вот теперь посмотрел и hilt лег куда надо. Спасибо👏
@user-bu7zr1kd1j
@user-bu7zr1kd1j 2 года назад
Спасибо за ваш труд!
@abumusa8887
@abumusa8887 2 года назад
Спасибо за урок, если есть возможность ждем уроки про Socket )))
@shakhriyarbadalov5628
@shakhriyarbadalov5628 9 месяцев назад
Спасибо за видео про зависимости))
@TheDamiankain
@TheDamiankain Год назад
Просто изумительный плейлст!
@videoedit6672
@videoedit6672 11 месяцев назад
Спасибо, круто объясняете! Ждем уроки про многопоточность: Coroutines, RxJava))
@alexkoty5877
@alexkoty5877 2 года назад
Спасибо, очень круто! Расскажите пожалуйста про assisted injection во второй части :)
@dmitrylyalin703
@dmitrylyalin703 2 года назад
В плейлисте этот ролик стоит первым.
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
Да, поправил это.
@spyro2008
@spyro2008 3 месяца назад
Спасибо!!!!!!!!
@sergiolobanovich
@sergiolobanovich 2 года назад
super nice
@Mecenatt
@Mecenatt Год назад
Спасиб. Только у меня почему-то у меня hilt попросил добавить @Inject constructor в дате слое в имплементаторе интерфейса юскейсов. Добавил и все заработало
@user-tg1yr1dt4n
@user-tg1yr1dt4n 2 года назад
Большое спасибо Мне из всех больше понравился Hilt 1.Он простой 2.Проверка при компиляции
@trolofoks9336
@trolofoks9336 Год назад
Только проверка просто Божеская, ошибка [Hilt] и ВСЕ, никаких указаний где что не так
@user-tg1yr1dt4n
@user-tg1yr1dt4n Год назад
@@trolofoks9336 Можно сделать более подробный лог об ошибке в build.gradle в официальное документации про Hilt об этом говорят kapt { correctErrorTypes true }
@stasmois8887
@stasmois8887 2 года назад
Спасибо за уроки! Очень доходчиво. Планируете что-нибудь такое же по юнит тестам?
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
да, как раз следующее видео будет по тестам.
@CoRecYT
@CoRecYT 2 года назад
Огромное спасибо! Два вопроса: как использовать один и тот же ViewModel на двух (и более) фрагментах? Должен ли я на каждом фрагменте писать AndroidEntryPoint для инициализации вью модели?
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
Для этого нужно получить view model, которая привязана к жизненному циклу активити, а не фрагментов. Нужно использовать: by activityViewModels() вместо by viewModels().
@letoatreidesii8028
@letoatreidesii8028 2 года назад
Отличные туториалы! вопрос по архитектуре: если приложение работает с микрофоном(speechToText), то логику работы с ним нужно выносить в VM, оставлять в Activity или делать отдельным пакетом (что то типа service и провайдить в DI, а сервис использовать в VM или Activity)?
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
Я бы сделал это вообще отдельным модулем, который можно подключить к presentation, к фича модулю либо к тому где нужно использовать этот функционал. И дальше у модуля будет публичный API(интерфейсы, методы), а за ними уже спрятана реализация. Получится что-то вроди небольшого плагина.
@letoatreidesii8028
@letoatreidesii8028 2 года назад
@@TimofeyKovalenko Спасибо. я чет про модуль не додумал.
@user-xw3ek8sf9t
@user-xw3ek8sf9t 2 года назад
При прикручивании hilt к своему проекту столкнулся со странной проблемой, у меня room через репозиторй возвращает flow , Flow примерно так. Когда создаю репозиторий во viewModel вручную flow.collect отлично отрабатывает и обновляет данные при изменении бд. а если инжекчу репозиторий через @Inject constructor, то collect отрабатывает только один раз. Мне кажеться это как то связанно с viewmodelScope.
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
Продебаж те жизненный цикл вью модели, станет понятно почему нет евентов после первого. Так сложно сказать что у вас не так, может с подпиской, что то не так.
@UbisoftRus
@UbisoftRus Год назад
Если у вас появляется ошибка "Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources" добавьте в корневой build.gradle (Project) вот эти строки: buildscript { /* ... */ dependencies { classpath 'com.android.tools.build:gradle:7.0.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31" classpath "com.google.dagger:hilt-android-gradle-plugin:2.42" } }
@dimaplotkin3532
@dimaplotkin3532 6 месяцев назад
Привет! Очень нравятся твои видео! Буду благодарен, если ответишь. Вопрос такой: как интегрировать в приложение androidx:navigation с помощью Hilt Dagger? Да и в целом, можно ли вообще это сделать? То есть я не могу получить объект активности, чтобы прописать findNavController().navigate(fragmentID). Такая же проблема с AllertDialog моими кастомными. Там тоже требуется активность. При попытке её заинджектить в ActivityModule с помощью @InstallIn(ActivityComponent:: class) мне выдаёт ошибку Hilt типа такого: ActivityRepository cannot be provided without an @Provides-annotated method. А если нельзя никак активность получить в Hilt, то как тогда работать со всеми функциями, которые её требуют? Если идти через view model напрямую, то будет не соответствовать clean architecture, поэтому я уже не знаю, что делать, кучу вариантов испробовал, ничего не могу понять(
@TimofeyKovalenko
@TimofeyKovalenko 6 месяцев назад
Во первых, использовать androidx:navigation c XML это полная дичь на мой взгяд, это библиотека совершенно не подходит для XML, но для compose отлично. Во вторых, тема навигации - это очень сложная вещь, у нас на курсе занятие по навигации 8 часов идет, а потом еще задание на несколько недель, и даже этого может быть мало, поэтому в комментарии сложно вам ответить. Но ссылка на активити не должна покидать активити.
@dimaplotkin3532
@dimaplotkin3532 6 месяцев назад
@@TimofeyKovalenkoСпасибо большое за такой скорый ответ! Если не сложно, подскажите ещё, что использовать в качестве переходов между фрагментами с XML? Стандартный FragmentManager или что другое?
@TimofeyKovalenko
@TimofeyKovalenko 6 месяцев назад
Я бы использовал стандартный FragmentManager. В этом случае придется его глубоко изучить, со всеми тонкостями, но оно того стоит.
@dimaplotkin3532
@dimaplotkin3532 6 месяцев назад
@@TimofeyKovalenko Спасибо большое ещё раз! Будем пробовать)
@jahongirzokirov3453
@jahongirzokirov3453 Год назад
6:48
@torskandinav4634
@torskandinav4634 2 года назад
а где ссылки обещанные ?
@TimofeyKovalenko
@TimofeyKovalenko 2 года назад
Упс,... добавил)
@trolofoks9336
@trolofoks9336 Год назад
видимо видос уже неактуален, а жаль, все повторил 1 в 1, но хилт выдет ошибку [Hilt] и это вся ошибка, нету ничего, ни через дебажные билды ни как еще, он просто не хочет билдится и это самое неприятное
@trolofoks9336
@trolofoks9336 Год назад
решилось все просто по имплементации через Доки, там теперь все по другому, лучше напиши гдето в описании что имплементировать в gradle сейчас нужно как написано в доках а не как ты показал
@yura.kuznetsov
@yura.kuznetsov 2 года назад
root build.gradle - во время вашей демонстрации файл выглядит вовсе по другому, с чем это связано?!
@garifzyanovrr
@garifzyanovrr Год назад
Тимофей привет! Все перепроверил два раза и всё равно выдает ошибку public final class MainActivity extends androidx.appcompat.app.AppCompatActivity { ^ @EntryPoint ru.rayanis.cleanarchitecturelearnapp.presentation.MainActivity must also be annotated with @InstallIn Пробовал решения из стэковерфлоу ставил AndroidEndtryPoint вместо Entrypoint, и @InstallIn пробовал, только без параметра. Не помогает.
Далее
MVI в Android на практике
19:20
Просмотров 14 тыс.
Dagger в Android на практике с MVVM
32:41
Все про Dagger Hilt в Android Studio + Kotlin
52:11
Hilt - лёгкий старт в Dagger
32:26
Просмотров 14 тыс.
MVP в Android на практике
11:35
Просмотров 6 тыс.
HashSet и HashMap в Java на практике
15:41
Просмотров 2,2 тыс.