Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā notiek notikumu abonēšanas mehānisms MVVMCROSS apstrādā pavedienu pārvaldību


Kā notiek notikumu abonēšanas mehānisms MVVMCROSS apstrādā pavedienu pārvaldību


Notikuma abonēšanas mehānisms MVVMCROSS, galvenokārt caur “IMVXMessenger” interfeisu, apstrādā pavedienu pārvaldību, nodrošinot vairākas iespējas, kā ziņojumi tiek piegādāti abonentiem. Tas ļauj izstrādātājiem pārvaldīt vītni, pamatojoties uz to lietojumprogrammas īpašajām prasībām.

abonēšanas metodes

MVVMCROSS piedāvā trīs galvenās metodes, kā abonēt ziņojumus, katram ar atšķirīgu vītņu ietekmi:

1. Abonēt: šī metode piegādā ziņojumus tieši uz pavediena, kurā tie tiek publicēti. Tam ir zemākā apstrādes pieskaitīšana, jo ziņojumi tiek saņemti sinhroni. Tomēr tas prasa rūpīgi apsvērt pavedienu, uz kura izpildīs ziņojumu apstrādātājs. Ja apstrādātājam ir jāsadarbojas ar lietotāja saskarni, pārliecinieties, ka tas darbojas uz lietotāja saskarnes pavediena; Pretējā gadījumā tas, iespējams, nevarēs tieši atjaunināt lietotāja saskarnes elementus.

2. ABROSRIPTEONMAINTHREAD: Šī metode nodrošina, ka ziņojumi tiek marķēti galvenajā lietotāja saskarnes pavedienā. Tas ir ideāli piemērots ziņojumu apstrādātājiem, kuriem jāveic ar UI saistīti uzdevumi, jo tas garantē, ka apstrādātājs izpildīs UI pavedienu. Tas ir ļoti svarīgi, lai atjauninātu lietotāja saskarni, jo lielākajai daļai UI ietvaru ir nepieciešami UI atjauninājumi galvenajā pavedienā.

3. SubronteOnThreadPoolThread: ziņojumi tiek rindā, lai apstrādātu pavedienu baseina pavedienu. Šī pieeja ir piemērota resursu ietilpīgiem uzdevumiem, kuriem nevajadzētu bloķēt lietotāja saskarni vai ziņojumu izdevēju. Tas nodrošina asinhrono apstrādi, pat ja ziņojums tiek publicēts no esoša pavedienu baseina pavediena.

Thread Management apsvērumi

Izvēloties abonēšanas metodi, apsveriet sekojošo:

- UI atjauninājumi: ja jūsu ziņojumu apstrādātājam ir jāatjaunina lietotāja lietotāja saskarne, izmantojiet `abronesonMainThread`. Tas nodrošina, ka UI atjauninājumi notiek pareizajā pavedienā.

-Resursu intensīvi uzdevumi: Resursu intensīviem uzdevumiem vai nevajadzētu bloķēt lietotāja saskarni, izmantojiet `abronthreadpoolthread`. Tas uztur lietotāja saskarni atsaucīgu, vienlaikus veicot uzdevumu asinhroni.

- Sinhronā apstrāde: ja jums ir nepieciešami ziņojumi, kas jāapstrādā sinhroni un apzinieties pavedienu, kurā tie tiks publicēti, izmantojiet pamata “abonēšanas” metodi.

Papildu parametri

Visas abonēšanas metodes MVVMCROSS pieļauj divus papildu parametrus:

- MVXReference: šis parametrs norāda, vai abonementam vajadzētu izmantot vāju vai spēcīgu atsauci. Vājās atsauces (`mvxReference.weak`) ļauj atkritumu savācējam noņemt abonementu, ja abonents vairs netiek atsauce, savukārt spēcīgas atsauces (` mvxReference.strong`) to novērš, nodrošinot, ka abonements paliek aktīvs, līdz skaidri nav aprakstīts.

- TAG: abonēšanas klasificēšanai var nodrošināt izvēles virknes tagu. Tas ir noderīgi, lai pārvaldītu vairākus abonementus vai filtrēšanu.

Rezumējot, MVVMCROSS notikumu abonēšanas mehānisms nodrošina elastīgas pavedienu pārvaldības iespējas, ļaujot izstrādātājiem izvēlēties, kā ziņojumi tiek piegādāti, pamatojoties uz viņu īpašajām lietojumprogrammu vajadzībām. Šī elastība ir būtiska, lai uzturētu atsaucīgas lietotāja saskarnes un efektīvi apstrādātu fona uzdevumus.

Atsauces:
[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://www.mvvmcross.com/mvvmcross-4.2/
[3.]
[4] https://www.youtube.com/watch?v=HQDVRWWZKIK
[5] https://www.mvvmcross.com/documentation/fundamentals/testing
[6.]
[7] https://docs.prismlibrary.com/docs/event-aggregator.html
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[9] https://stackoverflow.com/questions/17324650/mvvmcross-multithreading-ins
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle