MVVMCross, bir kuyruk mekanizması uygulayarak `` abone dehadthreadpoolthread '' kullanılırken mesajların kaybolmamasını sağlar. `` Aboneonthreadpoolthread '' kullanarak mesajlara abone olduğunuzda, gelen herhangi bir mesaj, bir iplik havuzu iş parçacığında eşzamansız işlem için sıraya alınır. Bu yaklaşım, mesaj yayıncısı ve abone farklı konularda olsa bile, mesajların alındıkları sırayla işlendiğini garanti eder.
İşte bunun nasıl çalıştığına dair ayrıntılı bir açıklama:
1. Mesaj kuyruğu: Bir mesaj yayınlandığında ve `` aboneonThreadPoolthread '' kullanan aboneler olduğunda, mesaj bir kuyruğa eklenir. Bu, abone bunları işlemek için hemen mevcut olmasa bile, mesajların kaybolmamasını sağlar.
2. Bu, mesajların engellenmeyen bir şekilde ele alındığı ve kullanıcı arayüzünün veya yayıncının ertelenmesini engellediği anlamına gelir.
3. İşleme sırası: Mesajlar alındıkları sırayla işlenir. Bu, uygulama durumunun bütünlüğünü korumak için çok önemli olan olayların sırasının korunmasını sağlar.
4. Zayıf Referanslar: Varsayılan olarak, MVVMCross abonelikler için bellek sızıntılarını önlemeye yardımcı olan zayıf referanslar kullanır. Bununla birlikte, `` aboneonThreadPoolthread '' kullanılırken, aboneliğin çöpün erken toplanmasını önlemek için abonelik jetonunun düzgün bir şekilde saklanmasını sağlamak önemlidir.
5. Abonelik Jetonları: Abone olurken, abone tarafından saklanması gereken bir jeton döndürülür. Bu jeton, daha sonra mesaj türünden abone olmak için kullanılabilir. Jetonun depolanması, aboneliğin açıkça abonelikten çıkana kadar aktif kalmasını sağlar.
Özetle, MVVMCross, bir iş parçacığı havuzu iş parçacığında asenkron işleme için mesajları sıraya alarak, işleme sırasını koruyarak ve abonelikleri etkili bir şekilde yönetmek için abonelik belirteçlerini kullanarak `` abone deonthreadpoolthread '' kullanılırken mesajların kaybolmamasını sağlar. Bu yaklaşım, bir uygulamadaki farklı iş parçacıkları arasında verimli ve güvenilir mesaj işlemesine izin verir.
Alıntılar:[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=hqdvrwwzkik
[5] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup
[6] https://stackoverflow.com/questions/17602137/mvvmcross-does-this-view-get-linked-to-the-viewmodel/17602246
[7] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[8] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[9] https://stackoverflow.com/questions/37168519/alert-dialog-in-viewmodel-mvvmcross