Какой жизненный цикл у ViewModel

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

Ответ

ViewModel сохраняет свои данные при изменении конфигурации (поворот экрана), но уничтожается при окончательном закрытии Activity/Fragment (onCleared()). Основные методы:

  1. onCreate() - вызывается при создании ViewModel
  2. onCleared() - вызывается перед уничтожением, здесь нужно освобождать ресурсы

Пример:

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

    override fun onCleared() {
        super.onCleared()
        // Освобождаем ресурсы
    }
}

ViewModel переживает только временные изменения конфигурации, но не survives процесс смерти (process death). Для этого нужно использовать SavedStateHandle.