Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako MVVMcross zagotavlja, da se sporočila ne izgubijo pri uporabi naročnine


Kako MVVMcross zagotavlja, da se sporočila ne izgubijo pri uporabi naročnine


MVVMcross zagotavlja, da se sporočila ne izgubijo pri uporabi `naročninothreadPoolThread` z izvajanjem mehanizma čakalnih vrst. Ko se naročite na sporočila s pomočjo `naročninethreadPoolThread`, se vsa dohodna sporočila čakajo na asinhroni obdelavi na nit nit nit. Ta pristop zagotavlja, da se sporočila obdelujejo v vrstnem redu, ki ga prejmejo, tudi če sta založnik sporočil in naročnik na različnih nitih.

Tu je podrobna razlaga, kako to deluje:

1. V čakalni vrsti sporočila: Ko je objavljeno sporočilo in obstajajo naročniki, ki uporabljajo `naročninothreadPoolthRead`, se sporočilo doda v čakalno vrsto. To zagotavlja, da sporočila niso izgubljena, tudi če naročnik ni takoj na voljo za njihovo obdelavo.

2. Obdelava nitskih bazenov: Sporočila v čakalnih vrstah se nato asinhrono obdela z nitjo nit. To pomeni, da se sporočila obravnavajo na neobremenjeni način, kar preprečuje, da bi se uporabniški vmesnik ali založnik zavlekel.

3. Vrstni red obdelave: Sporočila se obdelajo v vrstnem redu, ki so ga prejeli. To zagotavlja, da se ohrani vrstni red dogodkov, kar je ključnega pomena za ohranjanje celovitosti stanja aplikacije.

4. Šibke reference: MVVMcross privzeto uporablja šibke reference za naročnine, kar pomaga preprečiti puščanje spomina. Vendar pa je pri uporabi `naročninathreadPoolthRead` nujno, da se naročninski žeton pravilno shrani, da prepreči, da bi se naročnina prezgodaj zbirala smeti.

5. Naročniki žetonov: Ko se naročite, se vrne žeton, ki ga mora shraniti naročnik. Ta žeton lahko kasneje uporabite za odjavo od vrste sporočila. Shranjevanje žetona zagotavlja, da naročnina ostane aktivna, dokler se ne izrecno odjavi.

Če povzamemo, MVVMcross zagotavlja, da se sporočila ne izgubijo pri uporabi `naročninathreadPoolThread` s čakalnimi sporočili za asinhrono obdelavo na nit nit nit, vzdrževanje vrstnega reda obdelave in uporabo žetonov naročnine za učinkovito upravljanje naročnin. Ta pristop omogoča učinkovito in zanesljivo ravnanje s sporočili v različnih nitih v aplikaciji.

Navedbe:
[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-moultithreading-ins
[3] https://www.mvvmcross.com/documentation/fundamentals/data----
[4] https://www.youtube.com/watch?v=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-get-link-to-the-viewModel/17602246
[7] https://www.mvvmcross.com/documentation/fundamentals/viewModel-lifecycle
[8] https://diglib.tugraz.at/download.php?id=576A78335451D&location=browse
[9] https://stackoverflow.com/questions/37168519/alert-dialog-in-viewModel-mvvmcross