Junior — Middle
Jakie mogą wystąpić konsekwencje przy bezpośrednim wywołaniu konstruktora ViewModel w celu utworzenia jej instancji?
sobes.tech AI
Odpowiedź od AI
Bezpośrednie wywołanie konstruktora ViewModel (np. przez new ViewModel()) w Android powoduje, że cykl życia ViewModel nie będzie zarządzany przez system. W rezultacie:
- ViewModel nie będzie zachowany podczas obrotów ekranu lub ponownego tworzenia Activity/Fragment.
- Traci się główną zaletę ViewModel — zachowanie stanu.
- Mogą wystąpić wycieki pamięci, jeśli ViewModel zawiera odwołania do UI.
Poprawny sposób tworzenia ViewModel to użycie ViewModelProvider, który zapewnia właściwe zarządzanie cyklem życia:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
Zapewnia to ponowne użycie jednej instancji ViewModel w ramach cyklu życia komponentu.