MVVMCross, bellek sınırlı olduğunda uygulama stabilitesini korumak için çok önemli olan ViewModels durumunu kaydetmek ve geri yüklemek için mekanizmalar sağlayarak farklı platformlarda düşük bellek durumlarını işler. Bu durumları çeşitli platformlarda nasıl yönetiyor:
MVVMCross'a Genel Bakış
MVVMCross, Windows Phone, Windows 8, iOS, Android ve WPF uygulamalarını destekleyen platformlar arası bir MVVM çerçevesidir. Geliştiricilerin MVVM modelini bu platformlarda uygulamalarına izin vererek veri bağlamasını ve endişelerin ayrılmasını kolaylaştırır [2] [5]. Çerçeve, ViewModels'i barındırmak için taşınabilir bir sınıf kütüphanesi (PCL) kullanır ve bu da farklı platformlarda paylaşılmasını sağlar [5].
düşük bellek durumlarını kullanma
Android **
Android'de MVVMCross, platformun yaşam döngüsü ve bellek yönetimi nedeniyle zorluklarla karşı karşıya. Android'in yaşam döngüsü, ilişkili görüşlerinin yok edildikten hemen sonra viewmodellerin atılmadığı durumlara yol açabilir. Bunun nedeni, özellikle bellek kullanımı yüksek değilse, Xamarin'in çöp koleksiyonunun hemen gerçekleşmeyebileceğidir [4]. Bunu yönetmek için geliştiriciler, mesajlardan abone olmak ve yalnızca gerekli ViewModel örneklerinin aktif kalmasını sağlamak için `` viewAppearing '' ve 'viewDisAppearing' gibi olayları kullanabilirler [4].
iOS **
MVVMCross, iOS'a özgü düşük bellek uyarılarını doğrudan ele almasa da, geliştiriciler platforma özgü çözümler uygulayabilir. Örneğin, bir .NET Maui uygulamasında (MVVMCross gibi platformlar arası çerçevelere benzer), kaynakları temizlemek için uygulama delegeinde `` ApplicationDreceiveMemoryWarning'i 'geçersiz kılabilir [3]. Bununla birlikte, MVVMCross'un kendisi, bu uyarıları iOS üzerindeki işlemek için yerleşik bir mekanizma sağlamaz.
Windows Phone ve Diğer Platformlar **
Windows Phone ve diğer platformlar için MVVMCross, geliştiricilerin `onnavigatedto` ve` onnavigated from 'gibi sayfa düzeyinde olayları izlemelerine izin vererek belleği yönetmeye genel bir yaklaşım sunar. Bu olaylar gerektiğinde kaynakları serbest bırakmak için özel mantık uygulamak için kullanılabilir [8].
ViewModel Durumunu Kaydetme ve Geri Yükleme
MVVMCross, `mvxviewmodel` sınıfında` sailestatetObundle 'adlı bir yöntem sağlar, bu da geliştiricilerin uygulama mezheplendiğinde veya düşük bellek durumlarıyla karşı karşıya kaldığında görünümdelilerinin durumunu kurtarmasına izin verir. Bu durum, uygulama devam ettiğinde daha sonra geri yüklenebilir ve kullanıcının ilerlemesinin korunmasını sağlar [1]. Bu özellik, özellikle uygulama durumunun bellek kısıtlamaları nedeniyle kaydedilebileceği ve geri yüklenebileceği Android gibi platformlarda özellikle kullanışlıdır.
Özetle, MVVMCross her platform için platforma özgü düşük bellek işleme mekanizmaları sağlamazken, ViewModel durumunu yönetmek için araçlar sunar ve geliştiricilerin her platformun özel ihtiyaçlarına dayalı özel çözümler uygulamasına izin veren bir çerçeve sağlar.
Alıntılar:[1] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[2] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[3] https://learn.microsoft.com/en-us/answers/questions/1360447/net-maui-do--s-pocess-low-motificatio
[4] https://stackoverflow.com/questions/54040726/mvvmcross-android-ephears-to-boe-keep hold-of-viewmodels-and-never-nisposing-w-w
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-framework/
[6] https://stackoverflow.com/questions/32220007/what-does-mvmcross-do-that-xamarin-doesnt-allready
[7] https://www.reddit.com/r/dotnetmaui/comments/1c1qlou/maui_memory_leaks/
[8] https://stackoverflow.com/q/19817284
[9] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[10] https://www.hasaltaiar.com.au/a-hourney-offning-lebeaks-in-xamarin-2/