Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip „Mvvmcross“ tvarko „iOS“ įspėjimus apie mažai atminties


Kaip „Mvvmcross“ tvarko „iOS“ įspėjimus apie mažai atminties


„MVVMCross“ tvarko mažai atminties įspėjimus apie „iOS“, pasinaudodama platformos vietiniais atminties valdymo mechanizmais. Čia yra išsami apžvalga, kaip tai veikia:

MVVMCross ViewModel LifeCycle

„MVVMCross“ pateikia patikimą gyvenimo ciklo metodų rinkinį savo vaizdo modeliams, kurie yra labai svarbūs norint valdyti požiūrių būklę ir tvarkyti įprastas funkcijas. „MVXViewModel“ klasė yra akimirksniu naudojant IOC konteinerį, leidžiantį priklausyti nuo reikalingų paslaugų injekcijos [1]. Tačiau MVVMCross tiesiogiai nežiūri į žemos atminties įspėjimus; Vietoj to, jis priklauso nuo pagrindinių „iOS“ platformos mechanizmų.

„iOS“ žemos atminties įspėjimai

„IOS“ įspėjimai apie žemą atmintį paprastai tvarkoma naudojant du pagrindinius metodus:

1. Tai gera vieta išvalyti globalius išteklius ar atlikti kitas atminties reikalaujančias operacijas [3] [5].

2. „DidReceivememoryWarning ()` in UiviewController: Šis metodas remiasi, kai konkretus rodinio valdiklis gauna mažai atminties įspėjimą. Jis naudojamas išleisti konkrečius rodinius išteklius, kuriuos galima atkurti vėliau [3] [5].

Žemos atminties tvarkymas mvvmcross

Nors „MVVMCross“ tiesiogiai nesielgia su šiais įspėjimais, kūrėjai gali įdiegti būtiną logiką savo „View“ modeliuose arba peržiūrėti valdiklius, kad reaguotų į žemos atminties sąlygas. Pavyzdžiui, kai rodinio valdiklis gauna mažai atminties, jis gali suaktyvinti veiksmus, susijusius su jo vertinimo modeliu, kad išleistų išteklius.

Tombstoning in mvvmcross

„MVVMCross“ pateikia „View“ būsenos modelių taupymo ir atkūrimo mechanizmą, vadinamą „Tombstoning“. Tai ypač naudinga žemos atminties situacijose, kai vaizdai gali būti sunaikinti. Metodas „SavestateToBundle“ leidžia kūrėjams nuoseklauti peržiūros modelio būseną, kurią vėliau galima atkurti, kai vaizdas bus atkurtas [1].

Įdiegti žemos atminties tvarkymą

Norėdami veiksmingai tvarkyti mažai atminties įspėjimus „MVVMCross“ programoje „iOS“, kūrėjai turėtų:

- Įdiekite „ApplicationDidReceiveVemorywarning“ (_ :) `metodas programos delegate, kad tvarkytų visuotinę atminties valymą.
- Norėdami išleisti konkrečius rodinio išteklius, naudokite „DidReceiveVEMERYWARNING ()` metodą.
- Naudokite „MVVMCross“ „Tombstoning“ funkciją, kad prireikus išsaugotumėte ir atkurtumėte „View Model“ būsenas.

Derindami šias strategijas, kūrėjai gali užtikrinti, kad „MVVMCross“ programos „iOS“ veiksmingai reaguotų į žemos atminties įspėjimus ir palaikyti efektyvų atminties naudojimą.

Citatos:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://tommyb.com/blog/memory-management-in-xamarin-apps-series-part-gart-rect/
[3] https://learn.microsoft.com/en-us/answers/questions/1360447/net-maui-how-do-you-process-low-memory-notifatio
[4] https://debruyn.dev/2017/optimize-memory-usage-in-xamarin-apps/
[5] https://developer.apple.com/documentation/xcode/reageting-to-low-memory-warnings
[6] https://stackoverflow.com/questions/28116971/lifecycle-in-mvvmcross
[7] https://www.netguru.com/blog/what-are-ios-memory-reaks-and-how-todetect-them
[8] https://developer.apple.com/documentation/uiikit/reageting-to-memory-warnings
[9] https://learn.microsoft.com/en-us/answers/questions/349184/memory-conderations-on-xamarin-ios
[10] https://www.reddit.com/r/dotnetmaui/comments/1c1qlou/maui_memory_leaks/
[11] https://www.mvvmcross.com/mvvmcross-56-release/