Sobes.tech
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.