Service, Async Task & Thread arasındaki fark nedir. Yanılmıyorsam hepsi arka planda bazı şeyler yapmak için kullanılıyor. Peki hangisinin ne zaman kullanılacağına nasıl karar verilir?
Service, Async Task & Thread arasındaki fark nedir. Yanılmıyorsam hepsi arka planda bazı şeyler yapmak için kullanılıyor. Peki hangisinin ne zaman kullanılacağına nasıl karar verilir?
Yanıtlar:
Muhtemelen onlar hakkındaki dokümantasyon açıklamasını zaten okudunuz, onları tekrar etmeyeceğim, bunun yerine kendi kelimelerimle cevap vermeye çalışacağım, umarım size yardımcı olurlar.
Hizmet bir Etkinlik gibidir ancak kullanıcı arabirimi yoktur. Muhtemelen örneğin hava durumunu almak istiyorsanız bunun için boş bir etkinlik oluşturmayacaksınız, bunun için bir Hizmet kullanacaksınız.
Bir İş Parçacığı bir İş Parçacığıdır, muhtemelen onu diğer kısımdan zaten biliyorsunuzdur. Bir İş Parçacığından UI'yi güncelleyemeyeceğinizi bilmeniz gerekir. Bunun için bir İşleyici kullanmanız gerekir, ancak daha fazlasını okuyun.
Bir AsyncTask, kullanılması önerilen akıllı bir İş Parçacığıdır. Yöntemlerine yardımcı olabileceği için akıllıdır ve UI bileşenlerini güncellemek için iyi olan UI iş parçacığında çalışan üç yöntem vardır.
Hizmetleri, AsyncTasks sık sık kullanıyorum. AsyncTask ile neredeyse her şeyi yapabildiğim için daha az iş parçacığı veya hiç yok.
Sorunuz için en kolay cevap budur
Konu
Ana İş Parçacığına "paralel" çalışan bir yürütme birimidir önemli bir noktadır, ana iş parçacığı dışında herhangi bir iş parçacığından bir UI bileşenini güncelleyemezsiniz.
AsyncTask
AsyncTask bir arka plan iş parçacığında çalışacak olsa bile temelde UI'yi güncelleyebilmeniz için size UI'yi güncellemeniz için yardımcı yöntemler sağlayan özel bir iş parçacığıdır. İşlemler arası iletişim işleminin açık bir şekilde yapılması gerekli değildir.
Hizmet
Yukarıdaki sorunu çözün çünkü onu çağıran etkinlikten ayrı yaşıyor, böylece etkinlik yok edildiğinde bile çalışmaya devam edebilir , Ana İş Parçacığında çalışır (ANR'ye dikkat edin) bir arka plan hizmeti kullanın (IntentService'i genişletin, işçi iş parçacığını otomatik olarak oluşturur sizin için) . Hizmet, kullanıcı arayüzü olmayan bir etkinlik gibidir , uzun görevler için iyidir
Birinin bana birkaç gün önce söylemesini isterdim:
Kullanım durumum şöyle: Küresel alanda bir sunucuya bağlı bir iş parçacığım ve sonuçları gösteren bir Etkinlik var. Kullanıcı ana sayfa düğmesine bastığında Etkinlik arka plana gider ve yeni bir Hizmet başlatılır. Bu hizmet daha sonra iş parçacığından alınan sonuçları okur ve gerektiğinde bildirim alanında bilgileri görüntüler. İşletim sisteminin Aktivitemi yok etmesi konusunda endişelenmiyorum çünkü Servis çalıştığı sürece iş parçacığını yok edeceğini biliyorum.
Geliştiricinin bakış açısından:
Thread : Ana iş parçacığına paralel olarak kod setini yürütmek için kullanılır. Ancak iş parçacığı içindeki kullanıcı arayüzünü işleyemezsiniz. Bunun için kullanmanız gerekiyor Handler
. Hadler iş parçacığı gibi çalışır, ancak kullanıcı arayüzünü de kullanabilir.
ASyncTask : Ana iş parçacığı üzerinde çalışmak için yapamayacağınız görevleri işlemek için kullanılır. Örneğin, bir HTTP isteği, ana iş parçacığında işlenemeyen çok ağır bir iştir, bu nedenle HTTP isteğini ASyncTask
arka planda Asenkron olarak ana iş parçacığınızla paralel olarak işlersiniz. Etkinlikler.
Hizmet : Bir arka plan işlemidir. Kendisiyle ilişkilendirilmiş herhangi bir kullanıcı arayüzü olmayan bazı işlemler yapmanız gerektiğinde kullanılır.
Service
kullanmadığınız sürece arka planda çalıştırmanız gerekmez IntentService
. Service
UiThread'den bir standart başlatırsanız, UiThread üzerinde çalışacaktır.
Service
varsayılan olarak farklı bir işlemde çalışmaz, ancak diğer bileşenlerle uygulama sürecinde çalışır. Söylemesi daha iyi, Service
içinde yaşadığı İş Parçacığının Arka Planında çalışacak.