Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Які основні відмінності між mvvmcross 4.x та 3.x щодо життєвого циклу ViewModel


Які основні відмінності між mvvmcross 4.x та 3.x щодо життєвого циклу ViewModel


MVVMCROSS VERSIONS 3.x та 4.x мають кілька відмінностей щодо життєвого циклу ViewModel, в основному зосередженими навколо того, як ViewModels будуються, ініціалізуються та керуються.

mvvmcross 3.x

У Mvvmcross 3.x життєвий цикл ViewModel дотримується послідовності, відомої як CIRS: Construction, INIT (), reloadState () та start (). Ця послідовність використовується для ініціалізації та управління ViewModels. Ось поломка:

- Конструкція: ViewModel інстанціюється за допомогою контейнера IOC, що дозволяє здійснювати введення залежності. Саме тут вводиться послуги та інші залежності в ViewModel.
- init (): Цей метод використовується для ініціалізації параметрів навігації. Він викликається після будівництва, і саме там ви, як правило, встановлюєте будь -які початкові дані або параметри, передані ViewModel.
- reloadstate (): Цей метод несе відповідальність за регідратацію стану ViewModel після покоління, який виникає, коли додаток призупиняється, а потім відновиться через низькі умови пам'яті.
- start (): Цей метод викликається, коли ініціалізація та регідратація завершені. Зазвичай він використовується для запуску будь -яких поточних операцій або завдань.

mvvmcross 4.x

MVVMCross 4.X продовжує використовувати послідовність CIRS, але вводить деякі зміни та вдосконалення:

- Конструкція залишається однаковою, використовуючи МОК для введення залежності.
- init () все ще ініціалізує параметри навігації, але тепер є більш гнучким, що дозволяє набрати параметри навігації.
- reloadState () продовжує обробляти державну регідратацію після потомства.
- start () схожий, але може використовуватися рідше через введення більш асинхронних методів ініціалізації.

Значна зміна MVVMcross 4.x - це постійна підтримка набраних параметрів навігації, що дозволяє отримати більш структуровані дані, що проходять між ViewModels. Крім того, MVVMcross 4.x закладає основу для подальших вдосконалень навігації та управління життєвим циклом, які додатково посилюються в MVVMcross 5.x.

Ключові відмінності

- Параметри навігації: MVVMcross 3.x передає параметри навігації безпосередньо до методу `init ()`, тоді як MVVMCross 4.x підтримує набрані параметри навігації, що полегшує передачу складних даних між ViewModels.
- Гнучкість життєвого циклу: MVVMCross 4.X забезпечує більшу гнучкість у обробці життєвих циклів ViewModel, особливо з впровадженням методів асинхронної ініціалізації.
- Підтримка Tombstoning: обидві версії підтримують Tombstoning, але MVVMCross 4.X продовжує вдосконалювати цей процес, гарантуючи, що ViewModels може ефективно зберегти та відновити свій стан.

Загалом, MVVMCROSS 4.X ґрунтується на фундаменті, встановленому в 3.x шляхом посилення навігації, управління життєвим циклом та гнучкості в обробці складних даних та асинхронних операцій.

Цитати:
[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-get-disposed
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-a-built-in-message-for-viewmodel-to-tell-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/tutoriors/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