Junior — Middle
Aké dôsledky môžu nastať pri priameho volaní konštruktora ViewModel na vytvorenie jej inštancie?
sobes.tech AI
Odpoveď od AI
Priame volanie konštruktora ViewModel (napríklad cez new ViewModel()) v Androidu spôsobí, že životný cyklus ViewModel nebude systémom spravovaný. V dôsledku toho:
- ViewModel nebude zachovaný pri otáčaní obrazovky alebo pri znovuvytvorení Activity/Fragment.
- Stráca sa hlavná výhoda ViewModel — zachovanie stavu.
- Môžu nastať úniky pamäti, ak ViewModel obsahuje odkazy na UI.
Správny spôsob vytvárania ViewModel je použitie ViewModelProvider, ktorý zabezpečuje správne riadenie životného cyklu:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
Toto zabezpečuje opätovné použitie jednej inštancie ViewModel v rámci životného cyklu komponentu.