📺 Курс по Dagger 2 clck.ru/VtY7d 🔗 Документация по Dagger Hilt dagger.dev/dev-guide 🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast 💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon patreon.com/android_broadcast
Будьте очень осторожны с контекстом, так как хилт обворачивает контекст в свой врапер. При миграции нарвался на несколько багов из-за этого врапера. End-to-end тесты были отдельной головной болью. Пришлось переделывать инжект в апликейшин классе и создавать свои рулы для тестов.
Так как в дагере одно и тоже можно реализовать кучей разных способов, то отсюда следует вывод, даггер это путь самурая, у самурая нет цели, у самурая есть только путь.
Что касается передачи параметра во ViewModel @HiltViewModel class MainViewModel @Inject constructor(private val savedStateHandle: SavedStateHandle) : ViewModel { init { val param = savedStateHandle.get("param_key") } } Ну и, конечно, нужно запихнуть param_key с типом Long нравящимся способом.
14:50 - делается это очень легко. Я бы показал как это сделать, но вот только всратый ютуб удаляет все ссылки на gist. И не только ссылки, а даже часть пути ссылки, в которой даже слэши я заменил на слова
А что плохого в том что, создавать функция внутри viewModel с параметром newsId:Long, и всю логику перенести с блока инициализация в функция, и вызвать её при необходимости ?
@@AndroidBroadcast я с вами согласен, но не вижу смысла создавать модуль для таких задач, тем более, когда этот объект часто меняется например передается с editext и.т.п
У меня имеется старое монолитное приложение (все в одном модуле) полностью на Dagger2, моя задача обновить чат и вынести его как модуль. Но этот модуль должен работать как в старом приложении на Dagger2, так и в новом на Hilt. В модуле будет Dagger2. Но я нигде не могу найти подсказки, как внедрить library module на dagger в hilt app. Может у вас имеются полезные статьи?
Вы сможете только переиспользовать модули в таком случае, так как компоненты отличаются. Hilt не такой гибкий и лучше везде использовать Dagger, особенно в таком shared коде.
@@AndroidBroadcast Правильно ли я понимаю: получается я смогу в одном активити запросить зависимости предназначенные для другого активити, при том что обе активности находятся в разных гредл модулях. Это же обход инкапсуляции ради чего и создаются модули.
Нет, компонент это лишь API. Вам ещё его нужно создать и если вы будете использовать один и тот же инстанс то вы сможете доставить. Точно также как и с Dagger. Создавать компонент под каждую Activity не надо было никогда, только если вам надо делать разные Scope
А нужен ли вообще DI фреймворк если тестов не будет никогда в андроид проекте? Ведь DI фреймворк предполагает определенную архитектуру и даже логику приложения, что затрудняет разработку и поддержку