Ответ
ViewModel уничтожается автоматически, когда связанный с ней LifecycleOwner (Activity/Fragment) завершает свой жизненный цикл и уничтожается. Это происходит в следующих случаях:
- Activity/Fragment завершается (не из-за поворота экрана) – вызывается
onCleared(), где можно освободить ресурсы. - ViewModelStoreOwner (например, Activity) уничтожается без возможности восстановления.
Пример переопределения onCleared():
class MyViewModel : ViewModel() {
private val disposable = CompositeDisposable()
override fun onCleared() {
disposable.clear() // Очистка ресурсов
super.onCleared()
}
}
Важно: ViewModel сохраняется при смене конфигурации (например, повороте экрана), так как она хранится в ViewModelStore и перепривязывается к новому экземпляру Activity/Fragment.