Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka tapahtumatilausmekanismi MVVMCross -kahvan säikeen hallinnassa


Kuinka tapahtumatilausmekanismi MVVMCross -kahvan säikeen hallinnassa


MVVMCROSS: n tapahtumatilausmekanismi pääasiassa `IMvxMessenger` -rajapinnan kautta käsittelee säikeen hallintaa tarjoamalla useita vaihtoehtoja, kuinka viestit toimitetaan tilaajille. Tämän avulla kehittäjät voivat hallita kierteitä sovelluksen erityisvaatimusten perusteella.

Tilausmenetelmät

MVVMCROSS tarjoaa kolme päämenetelmää viestien tilaamiseksi, jokaisella on erilaisia ​​kierteitysvaikutuksia:

1. Tilaa: Tämä menetelmä toimittaa viestejä suoraan säieessä, jossa ne julkaistaan. Sillä on alhaisin käsittelykustannus, koska viestit vastaanotetaan synkronisesti. Se vaatii kuitenkin huolellista harkintaa säiettä, jolla viestin käsittelijä suorittaa. Jos käsittelijän on oltava vuorovaikutuksessa käyttöliittymän kanssa, varmista, että se toimii käyttöliittymän säikeellä; Muutoin se ei ehkä pysty päivittämään käyttöliittymäelementtejä suoraan.

2. Se on ihanteellinen viestinkäsittelijöille, joiden on suoritettava käyttöliittymän liittyvät tehtävät, koska se takaa, että käsittelijä suorittaa käyttöliittymän säikeellä. Tämä on ratkaisevan tärkeää käyttöliittymäelementtien päivittämiselle, koska useimmat käyttöliittymäkehykset edellyttävät,

3. TilaajaThreadPoolThread: Viestit on jonotettu käsittelemään ketjun uima -altaan säiettä. Tämä lähestymistapa sopii resurssiintensiivisiin tehtäviin, joiden ei pitäisi estää käyttöliittymän tai viestin kustantajaa. Se varmistaa asynkronisen prosessoinnin, vaikka viesti julkaistaan ​​olemassa olevasta ketjun uima -altaan säikeestä.

Lankahallinnan näkökohdat

Kun valitset tilausmenetelmää, harkitse seuraavaa:

- UI -päivitykset: Jos viestisi käsittelijän on päivitettävä käyttöliittymän elementit, käytä `SomectionMAinThread`. Tämä varmistaa, että käyttöliittymäpäivitykset tapahtuvat oikeassa säikeessä.

-Resurssiintensiiviset tehtävät: Resurssiintensiivisissä tehtävissä tai niiden ei pitäisi estää käyttöliittymää, käytä `TilaaNonThreadPoolThread`. Tämä pitää käyttöliittymän reagoivana käsitellessään tehtävää asynkronisesti.

- Synkroninen käsittely: Jos tarvitset viestien käsittelyä synkronisesti ja olet tietoinen säikeestä, jolla ne julkaistaan, käytä perustiedot "tilaa" -menetelmää.

Lisäparametrit

Kaikki MVVMCrossin tilausmenetelmät mahdollistavat kaksi lisäparametria:

- MVXReference: Tämä parametri määrittää, pitäisikö tilauksen käyttää heikkoa vai vahvaa viitettä. Heikot viitteet (`mvxreference.weak`) salli jätteiden keräilijän poistaa tilaus, jos tilaajaan ei enää viitata, kun taas vahvoihin viitteisiin (` mvxReference.strong`) estävät tämän, varmistamalla, että tilaus pysyy aktiivisena, kunnes nimenomaisesti määrittelemättömät.

- Tag: Valinnainen merkkijono voidaan antaa tilausten luokitteluun. Tämä on hyödyllistä useiden tilausten hallinnassa tai suodattamisessa.

Yhteenvetona voidaan todeta, että MVVMCROSS: n tapahtumatilausmekanismi tarjoaa joustavia säikekangonhallintavaihtoehtoja, joiden avulla kehittäjät voivat valita, miten viestit toimitetaan niiden erityisten sovellustarpeiden perusteella. Tämä joustavuus on ratkaisevan tärkeä reagoivien käyttöliittymien ylläpitämiseksi ja taustatehtävien tehokkaaseen käsittelyyn.

Viittaukset:
[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://www.mvvmcross.com/mvvmcross-4.2/
.
[4] https://www.youtube.com/watch?v=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/fundamentals/testing
.
[7] https://docs.prismlibrary.com/docs/event-aggregrator.html
.
[9.
[10] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle