Verze MVVMCROSS 3.x a 4.x mají několik rozdílů týkajících se životního cyklu ViewModel, především soustředěné kolem toho, jak jsou vyhlídkové moduly konstruovány, inicializovány a spravovány.
mvvmcross 3.x
V MVVMCROSS 3.x se životní cyklus ViewModel sleduje sekvenci známou jako CIRS: Construction, INIT (), RecoadState () a Start (). Tato sekvence se používá k inicializaci a správě zobrazení. Tady je porucha:
- Konstrukce: ViewModel je instalován pomocí kontejneru IOC, což umožňuje injekci závislosti. Zde se do viewmodel vstřikují služby a další závislosti.
- init (): Tato metoda se používá k inicializaci navigačních parametrů. Volává se po konstrukci a je to místo, kde byste obvykle nastavili všechna počáteční data nebo parametry předaná do ViewModel.
- RecoadState (): Tato metoda je zodpovědná za rehydrataci stavu ViewModel po náhrobku, ke kterému dochází, když je aplikace pozastavena a poté obnovena kvůli nízkým podmínkám paměti.
- Start (): Tato metoda se volá, když jsou inicializace a rehydratace dokončena. Obvykle se používá k zahájení probíhajících operací nebo úkolů.
mvvmcross 4.x
MVVMCross 4.x nadále používá sekvenci CIRS, ale zavádí některé změny a vylepšení:
- Konstrukce zůstává stejná a používá IOC pro injekci závislosti.
- init () stále inicializuje navigační parametry, ale nyní je flexibilnější, což umožňuje napsané navigační parametry.
- RecoloadState () pokračuje v manipulaci s rehydratací státu po náhrobku.
- Start () je podobný, ale lze jej použít méně často kvůli zavedení více asynchronních inicializačních metod.
Významná změna v MVVMCross 4.x je pokračující podpora pro typizované navigační parametry, které umožňují strukturovanější údaje procházející mezi viewModely. Kromě toho MVVMCross 4.x stanoví základy pro budoucí vylepšení navigace a řízení životního cyklu, které jsou dále vylepšeny v MVVMCross 5.x.
Klíčové rozdíly
- Parametry navigace: MVVMCross 3.x předává navigační parametry přímo do metody `init ()`, zatímco MVVMCross 4.x podporuje zadané navigační parametry, což usnadňuje předávání složitých dat mezi viewModely.
- Flexibilita životního cyklu: MVVMCross 4.x poskytuje větší flexibilitu při manipulaci s životními cykly ViewModel, zejména při zavedení asynchronních metod inicializace.
- Podpora TombStoningu: Obě verze podporují náhrobky, ale MVVMCross 4.x pokračuje v zdokonalování tohoto procesu a zajišťuje, že ViewModels může efektivně ukládat a obnovit jejich stav.
Celkově se MVVMCross 4.x staví na základu založeném v 3.x zvýšením navigace, správy životního cyklu a flexibility při řešení složitých dat a asynchronních operací.
Citace:[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-toes-t-get-discosed
[4] https://stackoverflow.com/questions/71959649/DOES-MVVMCROSS-HAVE-A-Built-n-ViewModel-to-lell-view-When-Viewappea
[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.mvvmcross.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/issues/2738