Biraz arasındaki farklar hakkında karıştı Handlers
, AsyncTask
ve Threads
Android'de. StackOverflow'da birkaç blog ve soru okudum.
Handler
kullanıcı arayüzüyle iletişim kurmanızı sağlayan arka plan iş parçacıklarıdır. Örneğin, bir ilerleme çubuğunun güncellenmesi yoluyla yapılmalıdır Handler
. İşleyicileri kullanma avantajına sahip olursunuz MessagingQueues
, bu nedenle iletileri planlamak veya birden çok kullanıcı arayüzü öğesini güncellemek veya tekrarlanan görevlere sahip olmak istiyorsanız.
AsyncTask
aslında benzerdir, Handler
UI iş parçacığından yararlanırlar , ancak çalışmazlar, bu nedenle veri almak için, örneğin web hizmetlerini almak için iyidir. Daha sonra kullanıcı arayüzüyle etkileşime geçebilirsiniz.
Thread
ancak kullanıcı arayüzü ile etkileşime giremez, daha "temel" iş parçacığı sağlar ve tüm soyutlamaları kaçırırsınız AsyncTask
.
Ancak, bir soket bağlantısı hizmet çalıştırmak istiyorum. Bu bir işleyici, iş parçacığı, hatta bir iş parçacığında mı çalıştırılmalıdır AsyncTask
? UI etkileşimi hiç gerekli değildir. Kullandığım performans açısından bir fark yaratıyor mu?
Bu arada, belgeler büyük ölçüde geliştirildi.
Handler
bir iş parçacığı değildir ve hiçbir şey yürütmez. Bu, yalnızca iletileri bir iş parçacığından başka bir iş parçacığının ileti sırasına güvenli bir şekilde iletmenin bir yoludur . Bu nedenle, normal olarak, (en azından) iki iş parçacığı hala oluşturulmalıdır, bu daha sonra bir işleyici kullanabilir , ancak işleyici hiçbir şeyi kendisi gerçekleştiremez.