MVVMCross'ta mezarlama, Windows Phone ve Android gibi mobil platformlarda ortak bir senaryo olan düşük bellek koşulları nedeniyle bir uygulama askıya alındığında veya sonlandırıldığında bir ViewModel'in durumunu kurtarma ve geri yükleme işlemini ifade eder. MVVMCross, bu işlemi etkili bir şekilde ele almak için mekanizmalar sağlar.
İnşaat ve Yaşam Döngüsü
MVVMCross ViewModels, ViewModel'e bağımlılık enjekte eden bir IOC kapsayıcısı kullanılarak başlatılır. MVVMCross'taki bir ViewModel'in yaşam döngüsü birkaç temel yöntem içerir:
- İnşaat: ViewModel, IOC konteyneri üzerinden enjekte edilen bağımlılıklarla oluşturulur.
- init (): ViewModel'i gezinme parametreleriyle başlatır.
- reloadState (): Tomboning'ten sonra ViewModel'in durumunu geri yükler.
- start (): başlatma ve rehidrasyon tamamlandığında çağrılır [3].
Tasarruf Durumu
Bir uygulama mezarlaştırıldığında, MVVMCross ViewModel'deki `` SaveStatetObundle 'yöntemini çağırır. Bu yöntem, verileri bir `` imvxBundle '' de saklayarak ViewModel'inizin durumunu kaydetmenize olanak tanır. Karmaşık verilerin depolanması için JSON serileştirme kullanılması tavsiye edilir [1].
Geri Yükleme Durumu
Uygulama yeniden etkinleştirildikten sonra MVVMCross, ViewModel'in durumunu geri yüklemeye çalışır. Bununla birlikte, durumu geri yüklemek için kesin yöntem MVVMCross'un platformuna ve sürümüne bağlı olarak değişebilir. Genel olarak, `` reloadState '' yöntemi, ViewModel'i kaydedilen durumla rehidre etmek için kullanılır [3].
platforma özgü hususlar
MVVMCross tarafından desteklenen her platform, mezarlığı farklı şekilde işler:
- Windows Phone: Tombstoning, `` onnavigatedto` ve `onnavigatedfrom '' gibi sayfa etkinlikleri aracılığıyla ele alınır. MVVMCross, bu olaylar sırasında durumu kurtarmak ve geri yüklemek için mekanizmalar sağlar, ancak uygun durum restorasyonunu sağlamak için ek kurulum gerektirebilir [4] [5].
- Android: MVVMCross, uygulama duraklatıldığında veya devam ettirildiğinde ViewModel durumunu kaydedip geri yükleyerek mezarlığı işler. Ancak, backstack temizlenirse veya gezinme parametreleri düzgün bir şekilde kaydedilmiyorsa sorunlar ortaya çıkabilir [6].
Zorluklar ve Çözümler
MVVMCross'ta mezarların işlenmesi, özellikle parametrelerle gezinirken zorlayıcı olabilir. Uygulamanın durumunun doğru restorasyonunu sağlamak için navigasyon parametrelerini ViewModel durumu ile birlikte kaydetmek çok önemlidir [6] [9]. Ek olarak, yardımcı kütüphanelerin veya özel çözümlerin kullanılması, durumu farklı platformlarda kaydetme ve geri yükleme sürecini basitleştirebilir [5] [8].
Özetle, MVVMCross, ViewModel durumunu kaydederek ve geri yükleyerek mezarların işlenmesi için sağlam bir çerçeve sağlar. Bununla birlikte, sorunsuz uygulama geri kazanımını sağlamak için platforma özgü nüansların dikkatli bir şekilde uygulanmasını ve dikkate alınmasını gerektirir.
Alıntılar:[1] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-reelease/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-sife-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-mee-usy-in-windows-phone-mvvm/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/decelop/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-reelease/