Ответ
ViewModel сохраняется при повороте экрана благодаря механизму ViewModelStore, который хранится в компоненте Activity/Fragment. При изменении конфигурации (например, повороте) Activity уничтожается и создается заново, но ViewModelStore сохраняется системой через onRetainNonConfigurationInstance() (для Activity) или setRetainInstance(true) (для Fragment). Когда новая Activity запрашивает ViewModel через ViewModelProvider, он проверяет ViewModelStore и возвращает существующий экземпляр.
Пример:
class MyViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// В Activity/Fragment:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)