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.