MVVMcross asigură că mesajele nu se pierd atunci când se utilizează `AbonareOntThreadpoolThread` prin implementarea unui mecanism de coadă. Când vă abonați la mesaje folosind `AbonareOntThreadpoolThread`, orice mesaje primite sunt în coadă pentru procesarea asincronă pe un fir de thread. Această abordare garantează că mesajele sunt procesate în ordinea în care sunt primite, chiar dacă editorul de mesaje și abonatul sunt pe diferite fire.
Iată o explicație detaliată a modului în care funcționează acest lucru:
1. Coada de mesaje: Când este publicat un mesaj și există abonați care folosesc `AbonareOntThreadpoolThread`, mesajul este adăugat la o coadă. Acest lucru asigură că mesajele nu se pierd, chiar dacă abonatul nu este disponibil imediat pentru a le prelucra.
2. Procesarea grupului de fir: Mesajele de coadă sunt apoi procesate asincron printr -un fir de pool de fir. Aceasta înseamnă că mesajele sunt gestionate într-o manieră care nu blochează, împiedicând întârzierea UI sau editorul.
3. Ordinea de procesare: mesajele sunt procesate în ordinea primită. Acest lucru asigură că ordinea evenimentelor este păstrată, ceea ce este crucial pentru menținerea integrității statului aplicației.
4. Referințe slabe: În mod implicit, MVVMCross folosește referințe slabe pentru abonamente, ceea ce ajută la prevenirea scurgerilor de memorie. Cu toate acestea, atunci când utilizați „abonamentOnthreadpoolThread”, este esențial să vă asigurați că jetonul de abonament este stocat în mod corespunzător pentru a împiedica abonamentul să fie colectat prematur.
5. Jetoane de abonament: La abonare, un jeton este returnat, care trebuie să fie stocat de abonat. Acest jeton poate fi utilizat pentru a se dezabona de la tipul de mesaj mai târziu. Stocarea jetonului asigură că abonamentul rămâne activ până la dezabonare explicit.
În rezumat, MVVMcross se asigură că mesajele nu se pierd atunci când se utilizează `abonareOnthreadpoolThread` prin coada mesajelor pentru procesarea asincronă pe un fir de pool de fir, menținând ordinea procesării și folosind jetoane de abonament pentru a gestiona abonamentele în mod eficient. Această abordare permite o gestionare eficientă și fiabilă a mesajelor pe diferite fire dintr -o aplicație.
Citări:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-mulithreading-ins
[3] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[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-iew-geget-kinked-to-the-viewmodel/17602246
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://diglib.tugraz.at/download.php?id=576a78335451d&locație=browse
[9] https://stackoverflow.com/questions/37168519/alert-dialog-in-viewmodel-mvvmcross