Для чего нужна ViewModel в MVVM

«Для чего нужна ViewModel в MVVM» — вопрос из категории Архитектура, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ViewModel в MVVM нужна для отделения логики от UI, хранения и управления данными, связанными с экраном. Она переживает изменения конфигурации (например, поворот экрана), сохраняя данные, и предоставляет их View через LiveData/Flow.

Пример:

class MyViewModel : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> get() = _data

    fun loadData() {
        _data.value = "Loaded data"
    }
}

В Activity/Fragment:

viewModel.data.observe(this) { data ->
    textView.text = data
}

Ключевые преимущества:

  • Нет утечек памяти (привязана к lifecycle)
  • Данные сохраняются при повороте
  • Чистая архитектура (UI не знает о бизнес-логике)