Ответ
Да, ViewModel сохраняется при смене конфигурации (например, повороте экрана). Это одно из ключевых преимуществ ViewModel перед обычными Activity/Fragment. ViewModel хранится в памяти до тех пор, пока связанный с ним scope (Activity/Fragment) полностью не завершится.
Пример:
class MyViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// В Activity
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this) { value ->
// Обновляем UI
}
При повороте экрана Activity уничтожается и создается заново, но тот же экземпляр ViewModel будет переиспользован. Однако ViewModel не сохраняет данные при убийстве процесса системой - для этого нужно использовать SavedStateHandle или onSaveInstanceState.