Ühekordne sidumine MVVMcrossis on kasulik sidumisrežiim, mis edastab väärtused ViewModelist vaatele ainult üks kord, kui sidumisallikas on seatud. See ei jälgi aktiivselt ViewModeli muutusi, mis tähendab, et see ei värskenda vaadet, kui ViewModeli atribuudid muutuvad pärast esialgset sidumist. Siin on mõned piirangud ja kaalutlused ühekordse sidumise kasutamiseks:
1. Pidevad värskendused puuduvad: ühekordse sidumise peamine piirang on see, et see ei värskenda vaatemodelli muutuste põhjal vaadet pidevalt. See muudab selle vähem sobivaks dünaamilisteks andmeteks, mis tuleb kajastada reaalajas kasutajaliideses.
2. Staatilised andmed: ühekordset sidumist kasutatakse kõige paremini staatiliste või kirjutuskaitstud andmete jaoks, mis sageli ei muutu. Näiteks kasutatakse seda sageli keelefailidest staatilise teksti seadmiseks, kuna keelevalikut tehakse tavaliselt üks kord ja seda ei muudeta sageli [1].
3. RecyclerView ja sarnased juhtelemendid: sellistes juhtelementides nagu "MVXRecyclerView", ei pruugi ühekordsed köited käituda ootuspäraselt ringlussevõtu tõttu. Kui kasutaja liigub loendist läbi, on vaated ringlussevõetud ja taaskasutatud, mis võib põhjustada ühekordseid seondumisi uuesti tulega, käitudes tõhusalt nagu pidevaid köiteid [4]. See võib põhjustada ootamatut käitumist, kui seda ei juhita korralikult.
4. Tulemuslikkuse kaalutlused: kuigi ühekordsed köitlused ei jälgi muudatusi, ei tutvusta need oma olemuselt jõudlusprobleeme. Kui seda kasutatakse laialdaselt keerulistes paigutustes või paljude köidetega, võib esialgne seadistamine aidata kaasa kasutajaliidese aeglasemale renderdamisaegadele võrreldes teiste sidumisrežiimidega [9].
5. Keedi ohutus: MVVMCROSSi köited, sealhulgas ühekordsed köited, võivad mõjutada keermestamisprobleeme, kui neid ei hallata. Näiteks kui köited täidetakse töötaja lõimega, võib see põhjustada ootamatu käitumise, kui see pole õigesti sünkroonis kasutajaliidese lõimega [5] [3].
Kokkuvõtlikult võib öelda, et kuigi ühekordne sidumine on kasulik staatiliste andmete jaoks, ei ole see ideaalne dünaamiliste andmete ega stsenaariumide jaoks, kus on vaja pidevaid värskendusi. Lisaks nõuab selle käitumine teatud kasutajaliidese komponentides, näiteks "RecyclerView" "ootamatute ümberlükkamiste vältimiseks hoolikat käitlemist.
Tsitaadid:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
]
[3] https://github.com/mvvmcross/mvvmcross/issues/1545
]
[5] https://www.mvvmcross.com/mvvmcross-4.2/
[6] https://github.com/mvvmcross/mvvmcross/issues/29
[7] https://stackoverflow.com/questions/17156368/
]
[9] https://github.com/mvvmcross/mvvmcross/issues/1342
[10] https://www.mvvmcross.com/mvvmcross-5-release/