Mechanizmus predplatného udalosti v MVVMCross, predovšetkým prostredníctvom rozhrania „IMVXMessenger“, spracováva správu vlákien poskytovaním niekoľkých možností, ako sa správy doručujú predplatiteľom. To umožňuje vývojárom spravovať vlákno na základe konkrétnych požiadaviek ich aplikácie.
Metódy predplatného
MVVMCross ponúka tri hlavné metódy na predplatenie správ, z ktorých každá má rôzne dôsledky závitu:
1. Prihláste sa na odber: Táto metóda poskytuje správy priamo v vlákne, kde sú zverejnené. Má najnižšie režijné náklady na spracovanie, pretože správy sa prijímajú synchrónne. Vyžaduje si však dôkladné zváženie vlákna, na ktorom bude obsluha správ vykonať. Ak obsluha potrebuje interagovať s používateľským rozhraním, uistite sa, že beží na vlákne používateľského rozhrania; V opačnom prípade nemusí byť schopná priamo aktualizovať prvky používateľského rozhrania.
2. PodpriptionOnMainThread: Táto metóda zaisťuje, že správy sú maršalované do hlavného vlákna používateľského rozhrania. Je ideálny pre obsluhy správ, ktorí potrebujú vykonávať úlohy súvisiace s používateľským rozhraním, pretože zaručuje, že obsluha sa vykoná na vlákne používateľského rozhrania. To je rozhodujúce pre aktualizáciu prvkov používateľského rozhrania, pretože väčšina rámcov používateľského rozhrania vyžaduje, aby sa v hlavnom vlákne vyskytli aktualizácie používateľského rozhrania.
3. PodpriptiononThreadpoolthread: Správy sú zaradené do frontu na spracovanie na vlákne vlákna. Tento prístup je vhodný pre úlohy náročné na zdroje, ktoré by nemali blokovať používateľské rozhranie ani vydavateľ správy. Zaisťuje asynchrónne spracovanie, aj keď je správa zverejnená z existujúceho vlákna vlákna.
Úvahy o správe vlákna
Pri výbere metódy predplatného zvážte nasledujúce:
- Aktualizácie používateľského rozhrania: Ak váš obsluha správ potrebuje aktualizovať prvky používateľského rozhrania, použite `subscriberonMainThread`. To zaisťuje, že aktualizácie používateľského rozhrania sa vyskytujú v správnom vlákne.
-Úlohy náročné na zdroje: Pre úlohy, ktoré sú náročné na zdroje alebo by nemali blokovať používateľské rozhranie, používajte `PridederonThreadPoolThread`. To udržuje používateľské rozhranie pohotové pri zvládaní úlohy asynchrónne.
- Synchrónne spracovanie: Ak potrebujete synchrónne spracovanie správ a uvedomte si vlákno, na ktorom budú zverejnené, použite základnú metódu „prihlásenia“.
Ďalšie parametre
Všetky metódy predplatného v MVVMCross umožňujú dva ďalšie parametre:
- MVXReference: Tento parameter určuje, či by predplatné malo používať slabú alebo silnú referenciu. Slabé referencie (`mvxreference.weak`) umožnite kolektorovi odpadu odstrániť predplatné, ak sa predplatiteľ už netýka, zatiaľ čo silné odkazy (` mvxreference.strong`) tomu zabránia, zaistenie zabezpečenia predplatného zostáva aktívne, kým nie sú explicitne nepodpísané.
- TAG: Na kategorizáciu predplatných je možné poskytnúť voliteľnú značku reťazca. Je to užitočné pre správu viacerých predplatných alebo na účely filtrovania.
Stručne povedané, mechanizmus predplatného udalosti spoločnosti MVVMCross poskytuje flexibilné možnosti správy vlákien, čo vývojárom umožňuje zvoliť, ako sa správy dodávajú na základe ich konkrétnych potrieb aplikácií. Táto flexibilita je rozhodujúca pre udržiavanie responzívnych UIS a efektívne zaobchádzanie s úlohami na pozadí.
Citácie:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://www.mvvmcross.com/mvvmcross-4.2/
[3] https://stackoverflow.com/questions/18465927/advice-on-where-whe-whe-whe-whe-to-use-use-observibleCollection-in-mcross
[4] https://www.youtube.com/watch?v=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/funmamentals/testing
[6] https://learn.microsoft.com/en-us/archive/msdnmagazine/2014/april/mvm-MultithReading-and-dispatching-in-mvvvm-applications
[7] https://docs.prismlibrary.com/docs/event-aggregator.html
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-woreview
[9] https://stackoverflow.com/questions/17324650/mvvmcross-Multithreading-ins-ins
[10] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle