Параметры, известные только в рантайме
Вопрос
ViewModel или класс требует и зависимости из графа, и параметр, известный только в момент создания (например, orderId). Какой механизм Dagger/Hilt для этого?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
@Providesс параметромorderIdв модуле экрана@Singletonс изменяемым полемorderIdдля текущего заказа@AssistedInject,@Assistedпараметр и@AssistedFactoryправильный ответ- Глобальная переменная
currentOrderIdв Application
Разбор
Assisted injection: конструктор помечают @AssistedInject, рантайм-параметры @Assisted, и объявляют интерфейс @AssistedFactory с методом create(orderId). Dagger сгенерирует фабрику, которая сама внедрит остальные зависимости. Для ViewModel в Hilt это делается через @HiltViewModel(assistedFactory = ...), хотя часто достаточно SavedStateHandle с аргументами навигации. Изменяемый синглтон и глобальные переменные ломают изоляцию экранов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.