Ответ
В Android ViewModel уничтожается автоматически, когда связанный с ней ViewModelStoreOwner (Activity/Fragment) завершает свой жизненный цикл. Однако есть нюансы:
- Activity: ViewModel уничтожается при
onDestroy(), еслиisFinishing == true(нажатие назад илиfinish()) - Fragment: ViewModel уничтожается при
onDestroy(), если фрагмент удаляется из back stack
Для принудительной очистки:
// Для Activity
if (!isChangingConfigurations) { // Не очищаем при повороте
viewModelStore.clear()
}
// Для Fragment
parentFragmentManager.beginTransaction()
.remove(this)
.commit()
Важно: Не очищайте ViewModel вручную без необходимости - это нарушает принцип сохранения состояния при повороте экрана.