Выбор ответа Junior DI: Hilt и Koin спрашивают часто обновлено

ViewModel с зависимостями в Hilt

Вопрос

Что нужно, чтобы Hilt создал ViewModel с репозиторием в конструкторе?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: @HiltViewModel, @Inject constructor, экран помечен @AndroidEntryPoint. Hilt генерирует фабрику для классов с @HiltViewModel и @Inject constructor, а by viewModels() или hiltViewModel() в помеченной @AndroidEntryPoint Activity или фрагменте использует её.

Варианты ответа

  1. @HiltViewModel, @Inject constructor, экран помечен @AndroidEntryPointправильный ответ
  2. Написать свою ViewModelProvider.Factory и зарегистрировать её в модуле @InstallIn
  3. Пометить ViewModel @Singleton, чтобы Hilt добавил её в корневой граф
  4. Создать ViewModel в модуле через @Provides и внедрить в Activity полем

Разбор

Hilt генерирует фабрику для классов с @HiltViewModel и @Inject constructor, а by viewModels() или hiltViewModel() в помеченной @AndroidEntryPoint Activity или фрагменте использует её. Своя фабрика не нужна. @Singleton для ViewModel неверен: ей управляет ViewModelStore. @Provides для ViewModel не используют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.