Junior — Middle
Welke gevolgen kunnen er optreden bij het rechtstreeks aanroepen van de ViewModel-constructeur om een exemplaar te maken?
sobes.tech AI
Antwoord van AI
Het direct aanroepen van de constructor van ViewModel (bijvoorbeeld via new ViewModel()) in Android zorgt ervoor dat de levenscyclus van ViewModel niet door het systeem wordt beheerd. Als gevolg hiervan:
- Wordt ViewModel niet behouden bij schermrotaties of het opnieuw maken van Activity/Fragment.
- Verliest men het belangrijkste voordeel van ViewModel — het bewaren van de staat.
- Kunnen geheugenlekken optreden als ViewModel verwijzingen naar de UI bevat.
De juiste manier om een ViewModel te maken, is door ViewModelProvider te gebruiken, dat een correcte levenscyclusbeheer garandeert:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
Dit zorgt voor hergebruik van één instantie van ViewModel binnen de levenscyclus van de component.