Sobes.tech
Junior — Middle

Welche Folgen können auftreten, wenn der ViewModel-Konstruktor direkt aufgerufen wird, um eine Instanz zu erstellen?

sobes.tech KI

Antwort von AI

Direkter Aufruf des ViewModel-Konstruktors (z.B. durch new ViewModel()) in Android führt dazu, dass der Lebenszyklus des ViewModel nicht vom System verwaltet wird. Folgende Konsequenzen ergeben sich:

  • Das ViewModel wird bei Bildschirmdrehungen oder der Neuerstellung von Activity/Fragment nicht beibehalten.
  • Der Hauptvorteil des ViewModel — die Zustandsbeibehaltung — geht verloren.
  • Es können Speicherlecks auftreten, wenn das ViewModel Referenzen auf die UI enthält.

Der richtige Weg, ein ViewModel zu erstellen, ist die Verwendung von ViewModelProvider, der eine korrekte Verwaltung des Lebenszyklus garantiert:

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)

Dies stellt die Wiederverwendung einer einzelnen Instanz des ViewModel im Rahmen des Lebenszyklus des Komponenten sicher.