SORU
6 AĞUSTOS 2011, CUMARTESİ


Handler vs vs Parçacığı AsyncTask

Android İşleyicileri, AsyncTasks ve evreler arasındaki farklılıklar hakkında biraz kafam karıştı. Stackoverflow burada epeyce bloglar ve bir soru okudum.

İşleyicileri UI ile iletişim kurmasını sağlayan bir arka plan iş parçacığı vardır. Örneğin bir durumunu belirlemek güncelleme İşleyicileri üzerinden yapılmalıdır. İşleyicileri kullanarak iletileri zamanlama veya birden fazla UI öğeleri güncelleştirmek veya yinelenen görevleri için MessagingQueues avantajı var.

AsyncTasks İşleyicileri kullandılar benzer, aslında, ama UI iş parçacığı, veri alınıyor yüzden bir çok örnek Web Hizmetleri alınıyor çalışmaz. Daha sonra UI ile etkileşim.

Konuları ancak UI ile etkileşim değil, daha fazla "" parçacığı ve AsyncTasks tüm soyutlamalar özledim. temel sağlamak

Ancak soket bağlantısı bir hizmet olarak çalıştırmak istiyorum. Bu işleyici veya bir iş parçacığı veya bir asynctask bile çalıştırılması gerekir? UI etkileşim hiç de gerekli değildir. Ben kullanmak performans açısından fark eder mi?

CEVAP
21 Mart 2012, ÇARŞAMBA


AsyncTask Handler, kaynak kodlarına bakarsanız kodlarını tamamen Java ile yazılmış olduğunu göreceksiniz. (Elbette bazı istisnalar vardır, ama bu önemli bir nokta değil.)

AsyncTask Handler büyü var. Onlar sadece işinizi daha kolay bir geliştirici olarak.

Örneğin: Eğer Program çağrıları Bir yöntem(), yöntem() kolayca doğrulayabilirsiniz Programı A. ile farklı bir iş parçacığı çalıştırabilir kullanarak:

Thread t = Thread.currentThread();    
int id = t.getId();

Yeni bir iş parçacığı kullanmanız neden bu kadar önemli? Bunun için google. Birçok sebep çok.

, Thread, AsyncTask Handler arasındaki fark nedir?

AsyncTask Handler yazılı Java (DAHİLİ olarak kullandıkları bir Thread), Bu yüzden her şeyi yap Handler AsyncTask elde edebilirsiniz kullanarak bir Thread de.

Handler AsyncTask gerçekten size nasıl yardımcı olabilirim?

En belirgin sebep arayan iş parçacığı ve iş parçacığı arasındaki iletişimdir. (Arayan İş Parçacığı: Çağıran bir iş parçacığıİş Parçacığıbazı görevi gerçekleştirmek için. İplik mutlaka UI iş parçacığı olması gerekmez Arayan). Tabii ki, başka yolları da iki iş parçacıkları arasında iletişim kurabilirsiniz, ama birçok dezavantajları vardır (ve tehlikeleri) iş parçacığı güvenlik sorunları nedeniyle.

Handler AsyncTask kullanmak etmelisiniz. Sizin için işin çoğunu onlar sadece geçersiz kılmak için ne olduğunu bilmek gerekir.

Handler AsyncTask arasındaki fark: AsyncTask ne zaman KullanınArayan iş parçacığıbirUI iş Parçacığı. Bu diyor ki:

AsyncTask UI iş parçacığı düzgün ve kolay kullanım sağlar. Bu sınıf arka plan işlemleri gerçekleştirmek ve UI üzerinde sonuçları yayınlamak için izin verir. iş parçacıkları ve/veya işleyicileri işlemek zorunda kalmadan iplik

İki noktayı vurgulamak istiyorum:

1) kullanıcı arabirimi iş parçacığı (thread arayan UI iş Parçacığı olduğunda, kullanımı) kullanımı Kolay.

2) Hayır işleyicileri işlemek gerekir. (anlamı: İşleyici AsyncTask, ama AsyncTask daha kolay bir seçenek) yerine kullanabilirsiniz.

Orada bu yazı çok şey henüz, örneğin: söylemedim daha kolay oluyor neden UI iş Parçacığı, ya da ne olduğunu. Her türlü arkasında bir yöntem olduğunu ve tamamen.. anlayacaksınız kullanmak gerekir

@: Android belgeyi okuduğunuzda göreceksiniz:

İşleyici ve Mesaj ve Çalıştırılabilir nesneler gönderme süreci sağlar bir iş parçacığı MessageQueue ile ilişkili

İlk başta tuhaf görünebilir. Sadece anlamak her parçacığı her ileti sırası (a)) ve konu alacak her bir mesaj ve ne kadar ileti sırası boş (gibi bitir işini ve git yat). Handler iletişim kurduğunda, sadece arayan iş parçacığı bir mesaj verir ve işlemi için bekleyin. Karmaşık? Handler güvenli bir şekilde arayan iş parçacığı ile iletişim kurabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3DS Max Tutorials

    3DS Max Tuto

    4 AĞUSTOS 2013
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • Trulia

    Trulia

    29 Kasım 2006