Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Katere so glavne razlike med mvvmcross 4.x in 3.x glede življenjskega cikla ViewModel


Katere so glavne razlike med mvvmcross 4.x in 3.x glede življenjskega cikla ViewModel


MVVMcross različice 3.x in 4.x imata več razlik glede življenjskega cikla ViewModel, ki so predvsem osredotočene na to, kako so vidni modeli izdelani, inicializirani in upravljani.

mvvmcross 3.x

V MVVMcross 3.x življenjski cikel ViewModel sledi zaporedju, znanem kot CIRS: Construction, init (), reloadState () in start (). To zaporedje se uporablja za inicializacijo in upravljanje ViewModels. Tukaj je razčlenitev:

- Konstrukcija: ViewModel je instanciran z uporabo vsebnika IOC, kar omogoča vbrizgavanje odvisnosti. Tu se v ViewModel vbrizgajo storitve in druge odvisnosti.
- init (): ta metoda se uporablja za inicializacijo navigacijskih parametrov. Pokliče se po gradnji in tam, kjer običajno nastavite vse začetne podatke ali parametre, posredovane na ViewModel.
- ReloadState (): Ta metoda je odgovorna za rehidriranje stanja ViewModela po nagrobniku, ki se pojavi, ko je aplikacija prekinjena in se nato nadaljuje zaradi nizkih pogojev pomnilnika.
- start (): ta metoda se imenuje, ko sta inicializacija in rehidracija popolna. Običajno se uporablja za začetek tekočih operacij ali nalog.

mvvmcross 4.x

MVVMcross 4.x še naprej uporablja zaporedje CIRS, vendar uvaja nekatere spremembe in izboljšave:

- Konstrukcija ostaja enaka, pri čemer uporaba IOC za vbrizgavanje odvisnosti.
- init () še vedno inicializira navigacijske parametre, vendar je zdaj bolj prilagodljivo, kar omogoča tipkane navigacijske parametre.
- ReloadState () še naprej obravnava državno rehidracijo po nagrobniku.
- start () je podoben, vendar se lahko uporablja manj pogosto zaradi uvedbe bolj asinhronih metod inicializacije.

Pomembna sprememba MVVMcross 4.x je nadaljnja podpora za tipkane navigacijske parametre, kar omogoča bolj strukturirane podatke, ki prenašajo med ViewModeli. Poleg tega MVVMcross 4.x postavlja temelje za prihodnje izboljšave navigacije in upravljanja življenjskega cikla, ki se še izboljšajo v MVVMcross 5.x.

Ključne razlike

- Navigacijski parametri: MVVMcross 3.x prenese navigacijsko parametre neposredno na metodo `init ()`, medtem ko MVVMcross 4.x podpira tipljive navigacijske parametre, kar olajša prenos kompleksnih podatkov med ViewModels.
- Prilagodljivost življenjskega cikla: MVVMcross 4.x zagotavlja večjo prilagodljivost pri ravnanju z življenjskimi kolesi ViewModel, zlasti z uvedbo asinhronih metod inicializacije.
- Podpora za nagnjenje: Obe različici podpirata nagrobništvo, vendar MVVMcross 4.X še naprej izpopolnjuje ta postopek in tako zagotavlja, da lahko vidni modeli učinkovito prihranijo in obnovijo svoje stanje.

Na splošno MVVMcross 4.x temelji na fundaciji, ki je bila ustanovljena v 3.x, z izboljšanjem navigacije, upravljanja življenjskega cikla in prožnosti pri ravnanju s kompleksnimi podatki in asinhronimi operacijami.

Navedbe:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifecycle-restore-not-working
[3] https://stackoverflow.com/questions/15961664/viewModel-lifecycle-when-does-it-disposed
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-a-built-in-message-for-viewModel-to-tell-sview-wwhen-oviepa
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewModel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[7] https://www.mvmcross.com/documentation/tutorials/tipcalc/a-note-about-views-and-viewModels
[8] https://www.ramotion.com/blog/what-is-mvvm/
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[11] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[12] https://github.com/mvvmcross/mvvmcross/isissue/2738