MVVMCross zpracovává nízké paměťové situace na Androidu poskytováním mechanismů pro uložení a obnovení stavu viewModels. To je zásadní, protože Android má svůj vlastní systém životního cyklu a paměti, který může z aplikací získat zpět paměť nebo je zcela zastavit, pokud je to nutné, aby se zdroje pro kritické úkoly uvolnily [1] [3]. Zde je podrobný přehled o tom, jak tyto situace řídí MVVMCross:
Ukládání a obnovení stavu ViewModel
MVVMCross umožňuje vývojářům zachránit stav svých ViewModels a obnovit jej později. To je zvláště užitečné ve scénářích, kde může systém Android ukončit aplikaci kvůli nízkým podmínkám paměti. Uložením stavu ViewModel může aplikace obnovit svůj předchozí stav, když je restartován, a poskytnout bezproblémový uživatelský zážitek [1].
Manipulace s událostmi souvisejícími s pamětí
Zatímco samotný MVVMCross přímo implementuje funkce správy paměti specifické pro Android, jako jsou `onTrimMeMory ()`, vývojáři používající MVVMCross mohou tyto API ANDROID stále využívat ve svých aktivitách. Implementace `ComponentCallbacks2` a převažující` onTrimMemory () `umožňuje aplikacím dobrovolně uvolňovat paměť v reakci na systémové události, což snižuje pravděpodobnost, že bude ukončen zabijákem s nízkou pamětí [3].
Úniky paměti a likvidace ViewModel
V aplikacích mvvmcross může dojít k únikům paměti, pokud nejsou zobrazeny správně zlikvidovány. Je zásadní, aby ViewModely přímo odkazovaly na zobrazení, aby se zabránilo únikům paměti. Použití slabých odkazů nebo ručního řízení silných odkazů s pečlivým předplatným a odhlášením z událostí může těmto únikům zabránit [5].
Upgradování kompatibility
Pro cílení na novější verze Android, jako je Android 10.0, je nezbytné aktualizovat MVVMCross na verzi 6.4.1 nebo vyšší. Tato aktualizace je nezbytná k zajištění kompatibility s nejnovějšími požadavky na Android a aby se zabránilo nehodám nebo problémům souvisejících s zastaralými rámci [2].
Ladění problémů s pamětí
Při diagnostice problémů souvisejících s pamětí v aplikacích MVVMCross Android mohou být nástroje jako Android Debug Monitor neocenitelné. Tyto nástroje umožňují vývojářům sledovat alokace paměti a identifikovat potenciální úniky nebo neefektivnost paměti [7].
Stručně řečeno, MVVMCross poskytuje rámec pro správu stavu ViewModel, ale spoléhá se na vývojáře, aby implementovali strategie správy paměti specifické pro platformu, jako je použití `ontrimmemory ()` a zajištění správné likvidace ViewModel, aby se zabránilo únikům paměti.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/59078153/mvmcross-anroid-10-0-q-mainactivity-exception-crash-on-setcontentview/59558389
[3] https://developer.android.com/topic/performance/memory
[4] https://www.mvvmcross.com/documentation/platform/android/android-linearlayout
[5] https://stackoverflow.com/questions/27008035/mvvmcross-Memory-leak-because-ot-discosed-viewModels
[6] https://av.tib.eu/media/51517
[7] https://www.codeproject.com/articles/798462/diagnosing-memory-sage-in-amarin-ndroid-appli
[8] https://learn.microsoft.com/en-us/answers/questions/1321808/maui-ndroid-memory-profiling-(heapdump)