MVVMCROSS ทำให้มั่นใจได้ว่าข้อความจะไม่หายไปเมื่อใช้ `SubcribeOnThreadPoolThread` โดยการใช้กลไกการเข้าคิว เมื่อคุณสมัครรับข้อความโดยใช้ `SubcribeOnThreadPoolThread` ข้อความที่เข้ามาจะถูกคิวสำหรับการประมวลผลแบบอะซิงโครนัสบนเธรดพูลเธรด วิธีการนี้รับประกันได้ว่าข้อความจะถูกประมวลผลตามลำดับที่ได้รับแม้ว่าผู้เผยแพร่ข้อความและผู้สมัครสมาชิกจะอยู่ในเธรดที่แตกต่างกัน
นี่คือคำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงาน:
1. การเข้าคิวข้อความ: เมื่อมีการเผยแพร่ข้อความและมีสมาชิกที่ใช้ `SubcribeOnThreadPoolThread 'ข้อความจะถูกเพิ่มลงในคิว สิ่งนี้ทำให้มั่นใจได้ว่าข้อความจะไม่สูญหายแม้ว่าสมาชิกจะไม่สามารถประมวลผลได้ทันที
2. การประมวลผลพูลเธรด: ข้อความคิวจะถูกประมวลผลแบบอะซิงโครนัสโดยเธรดพูลเธรด ซึ่งหมายความว่าข้อความได้รับการจัดการในลักษณะที่ไม่ปิดกั้นป้องกัน UI หรือผู้เผยแพร่ไม่ให้ล่าช้า
3. คำสั่งการประมวลผล: ข้อความถูกประมวลผลตามลำดับที่ได้รับ สิ่งนี้ทำให้มั่นใจได้ว่าลำดับของเหตุการณ์จะได้รับการเก็บรักษาไว้ซึ่งเป็นสิ่งสำคัญสำหรับการรักษาความสมบูรณ์ของสถานะของแอปพลิเคชัน
4. การอ้างอิงที่อ่อนแอ: โดยค่าเริ่มต้น MVVMCROSS ใช้การอ้างอิงที่อ่อนแอสำหรับการสมัครสมาชิกซึ่งช่วยป้องกันการรั่วไหลของหน่วยความจำ อย่างไรก็ตามเมื่อใช้ `subcribeonThreadPoolThread 'มันเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าโทเค็นการสมัครสมาชิกจะถูกเก็บไว้อย่างถูกต้องเพื่อป้องกันไม่ให้การสมัครสมาชิกถูกเก็บรวบรวมก่อนกำหนด
5. โทเค็นการสมัครสมาชิก: เมื่อสมัครสมาชิกโทเค็นจะถูกส่งคืนซึ่งสมาชิกจะต้องเก็บไว้ โทเค็นนี้สามารถใช้เพื่อยกเลิกการสมัครจากประเภทข้อความในภายหลัง การจัดเก็บโทเค็นทำให้มั่นใจได้ว่าการสมัครสมาชิกจะยังคงทำงานอยู่จนกว่าจะไม่มีการสมัครอย่างชัดเจน
โดยสรุป MVVMCROSS ทำให้มั่นใจได้ว่าข้อความจะไม่หายไปเมื่อใช้ `SubcribeOnThreadPoolThread` โดยการเข้าคิวข้อความสำหรับการประมวลผลแบบอะซิงโครนัสในเธรดพูลเธรดรักษาลำดับการประมวลผลและใช้โทเค็นการสมัครสมาชิกเพื่อจัดการการสมัครสมาชิกได้อย่างมีประสิทธิภาพ วิธีการนี้ช่วยให้การจัดการข้อความที่มีประสิทธิภาพและเชื่อถือได้ในเธรดที่แตกต่างกันในแอปพลิเคชัน
การอ้างอิง:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-multithreading-ins
[3] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[4] https://www.youtube.com/watch?v=HQDVRWZKIK
[5] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-his-view-get-linked-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