„MVVMCross“ užtikrina, kad pranešimai neprarandami, kai naudojami „prenumepreThreadPoolThread“ įgyvendinant eilės vedimo mechanizmą. Kai užsiprenumeruojate pranešimus, naudodamiesi „prenumepreThreadPoolThread“, visi gaunami pranešimai yra eilėje asinchroniniam apdorojimui ant gijos baseino gijos. Šis metodas garantuoja, kad pranešimai apdorojami jų gauta tvarka, net jei pranešimų leidėjas ir abonentas yra skirtingose gijose.
Štai išsamus paaiškinimas, kaip tai veikia:
1. Pranešimo eilutė: Kai skelbiamas pranešimas ir yra abonentų, naudojančių „prenumepreneNThreadPoolThread“, pranešimas pridedamas prie eilės. Tai užtikrina, kad pranešimai neprarandami, net jei abonentas nėra iš karto prieinamas juos apdoroti.
2. Sriegių baseino apdorojimas: eilės pranešimai yra apdorojami asinchroniškai siūlų baseino sriegiu. Tai reiškia, kad pranešimai tvarkomi ne blokuojančiais būdais, neleidžiant UI ar leidėjui atidėti.
3. Apdorojimo tvarka: pranešimai apdorojami jų gauta tvarka. Tai užtikrina, kad įvykių tvarka būtų išsaugota, o tai yra labai svarbi norint išlaikyti programos būsenos vientisumą.
4. Silpnos nuorodos: Pagal numatytuosius nustatymus „MVVMCross“ naudoja silpnąsias prenumeratos nuorodas, o tai padeda išvengti atminties nutekėjimo. Tačiau naudojant „prenumeruoti„ THreadPoolThread “, būtina užtikrinti, kad prenumeratos prieigos raktas būtų tinkamai saugomas, kad prenumerata būtų per anksti surinkta šiukšlių.
5. Prenumeratos žetonai: kai prenumeracija yra grąžinamas prieigos raktas, kurį turi saugoti abonentas. Šis prieigos raktas gali būti naudojamas vėliau atsisakyti pranešimo tipo prenumeratos. Laikymasis prieigos raktas užtikrina, kad prenumerata išliks aktyvi, kol aiškiai nenusakoma.
Apibendrinant galima pasakyti, kad „MVVMCross“ užtikrina, kad pranešimai neprarandami, kai naudojami „prenumepreThreadPoolthread“, eilės pranešimuose, kuriuose yra asinchroninis apdorojimas ant sriegio baseino gijos, išlaikant apdorojimo tvarką ir naudodami prenumeratos žetonus, kad būtų galima efektyviai valdyti prenumeratas. Šis metodas leidžia efektyviai ir patikimai tvarkyti įvairius programos gijas.
Citatos:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-multithreading-ss
[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 ir-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-get-linkme--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