Где хранится ViewModel

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

Ответ

ViewModel хранится в памяти, внутри ViewModelStore, который принадлежит ViewModelStoreOwner (например, Activity или Fragment). ViewModelStore сохраняет ViewModel до тех пор, пока его владелец не будет уничтожен (для Activity — до завершения, для Fragment — до отсоединения). При повороте экрана ViewModel сохраняется, так как Activity/Fragment пересоздаются, но ViewModelStore остается.

Пример:

class MyViewModel : ViewModel() {
    // Логика ViewModel
}

// Получение ViewModel в Activity/Fragment
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)