До какого момента ViewModel гарантирует сохранение состояния

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

Ответ

ViewModel сохраняет состояние до тех пор, пока связанный с ней компонент (Activity/Fragment) находится в активном состоянии (не уничтожается системой). Это включает:

  1. Конфигурационные изменения (поворот экрана)
  2. Временное уничтожение Activity системой для освобождения памяти

ViewModel очищается только когда:

  • Activity завершает работу (finish())
  • Fragment полностью удаляется (не просто detach)

Пример сохранения данных:

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

    fun loadData() {
        _data.value = "Saved state"
    }
}