Каким образом осуществляешь передачу данных в слой ViewModel?

В Android для передачи данных в ViewModel обычно используют конструктор ViewModel или специальные методы, если ViewModel создаётся через ViewModelProvider.Factory.

Короткий ответ

Что ответить на собеседовании

В Android для передачи данных в ViewModel обычно используют конструктор ViewModel или специальные методы, если ViewModel создаётся через ViewModelProvider.Factory. Поскольку ViewModel должна быть независимой от UI, данные передаются при создании или через функции, которые обновляют внутреннее состояние.

Подробный разбор

Ответ с пояснениями

В Android для передачи данных в ViewModel обычно используют конструктор ViewModel или специальные методы, если ViewModel создаётся через ViewModelProvider.Factory. Поскольку ViewModel должна быть независимой от UI, данные передаются при создании или через функции, которые обновляют внутреннее состояние.

Пример передачи параметра через фабрику:

class MyViewModel(private val userId: String) : ViewModel() {
    // логика с использованием userId
}

class MyViewModelFactory(private val userId: String) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(MyViewModel::class.java)) {
            return MyViewModel(userId) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}

// В Activity или Fragment
val factory = MyViewModelFactory("12345")
val viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)

Также можно использовать LiveData или StateFlow внутри ViewModel для передачи и обновления данных, а UI подписывается на эти потоки.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку