2015-11-14 13 views
11

Android REST istemcisi için Retrofit 2 kitaplığını kullanıyorum. Güçlendirme kendini senkronize ve senkronize olmayan bir talebi destekler (here numaralı telefona bakınız), bunun nedeni bir iş parçacığını engellememek ve böylece android tarafından kesintiye uğramamaktır. Pratikte, yerel bir AsyncTask veya eşzamanlı aramalarda eşzamanlı çağrıları doğrudan Retrofit'ten kullanmak daha mı iyidir? Birinden diğerine tercih edilirse, teknik nedenler nelerdir?Güçlendirme 2 android için en iyi uygulama: AsyncTask'ta asenkronize istek veya senkronize istek mi?

cevap

20

'un popüler REST istemcilerinden herhangi birinin'u kullanmanın başlıca nedenlerinden biri (düzeltme, voleybol, vb.), Uygulama katmanında yönettiğiniz ayrıntı miktarını azaltmalarıdır. Bu ayrıntılardan biri, ağ isteğinizin ana iş parçacığından kaynaklandığından emin olmaktır. Zaten başka özellikler için kullandıkları bir kütüphane daha az törenle aynı işlevselliği sağladığında neden bir AsyncTask kullanıyor? Düşünebilmemin tek nedeni - kütüphanenin iş parçacığının çok iyi olduğunu düşünmüyorsun. Bu endişe, güçlendirme 2 için geçerli değildir, async çağrılarını göndermek için OkHttp kullanır. OkHttp bir süredir çalışmakta ve yaygın olarak kullanılmaktadır, async isteklerini yürütmek için kendi iş parçacığı havuzunu yönetir ve sağlamdır.

Bu nedenle, uyumluluk uyumsuzluğunu kullanmanın üst tarafı daha temiz koddur ve geriye doğru hiçbir uyumsuzlukla eşzamanlı senkronizasyon çağrıları ile AsyncTask biliyorum. Senkronizasyon çağrılarını kullandığım tek zaman, kodumun başka bir nedenden ötürü arka plan iş parçacığında yürütülmesi. Ağ araması için sadece ayrı bir iş parçacığı veya eşzamansız oluşturma ve bunun yerine enqueue kullanın.