MVVMCross sürümleri 3.x ve 4.x, ViewModel LifeCcle ile ilgili olarak, öncelikle ViewModels'in nasıl oluşturulduğu, başlatıldığı ve yönetildiği konusunda ortalanmış birkaç farklılık vardır.
mvvmcross 3.x
MVVMCross 3.x'te ViewModel LifeCycle, CIRS: Construction, Init (), ReloadState () ve Start () olarak bilinen bir diziyi takip eder. Bu dizi ViewModels'i başlatmak ve yönetmek için kullanılır. İşte bir döküm:
- İnşaat: ViewModel, bağımlılık enjeksiyonuna izin vererek IOC konteyneri kullanılarak başlatılır. Bu, hizmetlerin ve diğer bağımlılıkların ViewModel'e enjekte edildiği yerdir.
- init (): Bu yöntem gezinme parametrelerini başlatmak için kullanılır. İnşaattan sonra çağrılır ve tipik olarak ViewModel'e aktarılan ilk verileri veya parametreleri ayarlayacağınız yerdir.
- ReloadState (): Bu yöntem, uygulama askıya alındığında ve daha sonra düşük bellek koşulları nedeniyle devam ettiği zaman meydana gelen mezardan sonra ViewModel'in durumunun rehidrasyonundan sorumludur.
- start (): Bu yöntem, başlatma ve rehidrasyon tamamlandığında çağrılır. Genellikle devam eden işlemleri veya görevleri başlatmak için kullanılır.
mvvmcross 4.x
MVVMCross 4.x, CIRS dizisini kullanmaya devam ediyor, ancak bazı değişiklikler ve iyileştirmeler sunuyor:
- Bağımlılık enjeksiyonu için IOC kullanarak inşaat aynı kalır.
- init () hala gezinme parametrelerini başlatır, ancak şimdi daha esnektir, yazılan gezinme parametrelerine izin verir.
- ReloadState (), mezardan sonra durum rehidrasyonunu ele almaya devam eder.
- Start () benzerdir, ancak daha asenkron başlatma yöntemlerinin getirilmesi nedeniyle daha az sık kullanılabilir.
MVVMCross 4.x'teki önemli bir değişiklik, viewModels arasında daha yapılandırılmış verilerin geçmesine izin veren yazılan navigasyon parametreleri için sürekli destektir. Ek olarak, MVVMCross 4.x, MVVMCross 5.x'de daha da geliştirilen navigasyon ve yaşam döngüsü yönetiminde gelecekteki iyileştirmeler için zemin hazırlıyor.
Anahtar Farklılıklar
- Gezinme Parametreleri: MVVMCross 3.x, navigasyon parametrelerini doğrudan `init ()` yöntemine aktarırken, MVVMCross 4.x tiped navigasyon parametrelerini destekleyerek viewModels arasında karmaşık verileri aktarmayı kolaylaştırır.
- Yaşam Döngüsü Esnekliği: MVVMCross 4.x, özellikle eşzamansız başlatma yöntemlerinin piyasaya sürülmesiyle, ViewModel Lifeccles'in işlenmesinde daha fazla esneklik sağlar.
- Tomboning Desteği: Her iki sürüm de TombStoning'i destekler, ancak MVVMCross 4.x bu süreci iyileştirmeye devam ederek ViewModels'in durumlarını etkili bir şekilde tasarruf edip geri yükleyebilmesini sağlar.
Genel olarak, MVVMCross 4.x, navigasyon, yaşam döngüsü yönetimi ve karmaşık verilerin ve eşzamansız işlemlerin işlenmesinde esnekliği artırarak 3.x'de kurulan temel oluşturur.
Alıntılar:[1] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-Lifecycycle-restore-not-working
[3] https://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-it-get-dispoz
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-a--built-in-fessage-for-viewmodel-tell-view-when-viewappea
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-sife-cycle
[6] https://www.mvvmcross.com/documentation/adved/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