Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak MVVMCross zpracovává nízké paměťové situace na různých platformách


Jak MVVMCross zpracovává nízké paměťové situace na různých platformách


MVVMCross zpracovává nízké paměťové situace na různých platformách poskytováním mechanismů pro uložení a obnovení stavu viewModels, což je zásadní pro udržení stability aplikace, když je paměť omezená. Zde je návod, jak tyto situace řídí na různých platformách:

Přehled mvvmcross

MVVMCross je rámec MVVM pro platformu, který podporuje aplikace Windows Phone, Windows 8, IOS, Android a WPF. Umožňuje vývojářům implementovat vzorec MVVM na těchto platformách a usnadňovat vazbu dat a oddělení obav [2] [5]. Framework používá přenosnou knihovnu třídy (PCL) k umístění zobrazovacích modulů, což jim umožňuje sdílet na různých platformách [5].

Manipulace s nízkými paměťovými situacemi

Android **

Na Androidu čelí MVVMCross výzvy kvůli životnímu cyklu a správě paměti platformy. Životní cyklus Androidu může vést k situacím, kdy se zobrazovací modely nejsou zlikvidovány bezprostředně po zničení jejich souvisejících názorů. Důvodem je, že sběr odpadu Xamarinu se nemusí objevit okamžitě, zejména pokud není využití paměti vysoké [4]. K tomuto zvládnutí mohou vývojáři používat události jako „Viewapearing` a„ ViewDisappearing “k odhlášení ze zpráv a zajistit, aby zůstaly aktivní pouze nezbytné případy viewModels [4].

ios **

Zatímco MVVMCross přímo nezpracovává varování s nízkou pamětí specifická pro IOS, vývojáři mohou implementovat řešení specifická pro platformu. Například v aplikaci .NET MAUI (která je v konceptu podobná jako rámce napříč platformami, jako je mvvmcross), můžete přepsat „ApplicationDidReceEMoryWarning“ v aplikaci delegát k vyčištění zdrojů [3]. Samotný MVVMCross však neposkytuje vestavěný mechanismus pro manipulaci s těmito varováními na iOS.

Windows Phone a další platformy **

Pro Windows Phone a další platformy poskytuje MVVMCross obecný přístup ke správě paměti tím, že umožňuje vývojářům sledovat události na úrovni stránek, jako jsou „onnavigatedto“ a `onnavigated from“. Tyto události lze v případě potřeby použít k implementaci vlastní logiky pro uvolnění zdrojů [8].

Ukládání a obnovení stavu ViewModel

MVVMCross poskytuje metodu nazvanou `arestateTobunddle` ve třídě` mvxViewModel`, která vývojářům umožňuje zachránit stav jejich viewModels, když je aplikace hrobkována nebo čelí nízkým paměťovým situacím. Tento stav může být obnoven později, když se aplikace obnoví, což zajistí, že je povýšení uživatele zachován [1]. Tato funkce je zvláště užitečná na platformách, jako je Android, kde může být stav aplikace uložen a obnovován často kvůli omezením paměti.

Stručně řečeno, zatímco MVVMCross neposkytuje pro každou platformu specifické pro manipulaci s nízkou manipulací s pamětí, nabízí nástroje pro správu stavu ViewModel a poskytuje rámec, který umožňuje vývojářům implementovat vlastní řešení na základě konkrétních potřeb každé platformy.

Citace:
[1] https://www.mvvmcross.com/documentation/fundamentals/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-how-do-you-row--Memory-notificatio
[4] https://stackoverflow.com/questions/54040726/mvvmcross-ndroid-appears-to---viewModels-and-never-disposing-w
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do-that-xamarin-doesnt-již
[7] https://www.reddit.com/r/dotnetmaui/Comments/1C1 /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-journey-of-Hunting-leaks-in-xamarin-2/