Hizmet ve yayın alıcısı arasındaki fark nedir?


14

Hizmetler ve yayın alıcıları hakkında işitmeye devam ediyorum . Aralarındaki fark nedir ve Android telefonumun çalışmasını benim açımdan nasıl etkiler?


TCP katmanında bağlantı noktaları oluşturmak yerine her zaman pili ve çok sayıda işlemi kaydetmek için yayın alıcıları oluştururuz. Android'de bir olay olduğunda .... yayın telefon içinde tüm uygulamalara gönderilir. yazılı o olay yayın alıcı var ,, otomatik olarak çağrılacaktır. Teknik olarak olay gerçekleşti android açısından niyet denir
Rahul Raina

Yanıtlar:


27

Android uygulamalarının üç tür bileşeni vardır. Genel olarak, kullanıcılar bunları bilmelerine gerek yoktur: uygulama yazarlarının uygulamalarına belirli davranışları programlamasının bir yoludur. Ancak uygulamalarınızın bir görev yöneticisi gibi davranışlarını yakından izliyorsanız veya Tasker gibi bir uygulama ile işleri otomatikleştiriyorsanız, bunların sisteme nasıl bir araya geldiğini anlamak yardımcı olur.

Bir etkinlik bileşeni en tanıdık türüdür: tam ekran ya da iletişim boyutunda ya: o sizin görebileceğiniz bir pencere. Bir etkinlik yalnızca ekranda görüntülenirken çalışır. Etkinlikten ayrıldıktan sonra, Android bu uygulamayı yeniden başlatmaya hazır halde tutacaktır, ancak etkinlik çalışmaz, yani pil veya ağ kullanmaz. Bir uygulama bir niyet kullanarak bir etkinlik başlatır . Amaç, hangi aktivitenin başlatılacağını açıkça belirtebilir veya gerçekleştirilecek bir eylemi belirleyebilir (belirli bir dosyayı açmak gibi). Birden fazla etkinlik amacı "işleyebiliyorsa", bir tane seçmenizi isteyen iletişim kutusunu görürsünüz.

Bir hizmet başka bir uygulama bileşenidir. Başka bir bileşen (belki bir etkinlik veya başka bir hizmet) bir hizmeti başlattıktan sonra, kendini durdurana kadar arka planda çalışır. Bu, bir hizmetin telefonunuzu uyanık ( uyanıklık kilidi kullanarak ), pili bitirmesi veya ekranda hiçbir şey görünmeden çok sayıda ağ verisi kullanması anlamına gelir.

Uygulamalar, sunucudan dosya indirme veya e-posta kontrolü yapma veya konumunuzu kontrol etme gibi arka planda uzun süren işlemler yapmak için hizmetleri kullanabilir. Hizmetler doğrudan sizinle görünmese veya sizinle etkileşime girmese de, "Çalışan uygulamalar" listesinde görünmeye devam eder. Gönderen Ayarlar uygulamasında, seçim Uygulamalar veya Uygulamaları yöneticisi ve sonra Koşu . Bir hizmeti bu şekilde durdurabilirsiniz, ancak genellikle gerekli değildir. Hizmetler doğrudan görünmediği için, Android onları etkinliklerden daha az önemli görüyor, bu nedenle telefonunuzun daha fazla belleğe ihtiyacı olduğunda ilk öldürülecekler.

Yayın alıcıları üçüncü bileşen türüdür. Hizmetler gibi, bunlar yalnızca arka planda bulunur ve sizinle doğrudan etkileşime girmez. Ancak hizmetlerin aksine, çalışmaya devam edemezler veya uzun görevler gerçekleştiremezler: olaylara yanıt vermek için varlar. Faaliyetlerden ve hizmetlerden farklı olarak, bir seferde birden fazla yayın alıcısı başlatılabilir.

Bir bileşen , büyük olasılıkla tek bir uygulamaya, ancak belirli bir uygulamayı belirtmeden, genellikle bir amaç yayınlar . Bu durumda, amaç genellikle bataryanın bitmesi gibi olan bir olayı temsil eder. Sistem, bir ilgi kaydetmiş (bir niyet filtresi kullanarak ) tüm yayın alıcılarını bulur ve her birini sırayla çalıştırır. Her yayın alıcısı, örneğin bir bildirim oluşturarak hemen tepki verebilir veya daha fazla işlem yapmak için bir hizmet veya etkinlik başlatabilir. Yayın alıcısı olayı ele alır almaz durdurulur ve benzer başka bir olay yayınlanana kadar tekrar çalışmaz.

Birlikte çalışan üç bileşenin de bir örneği, Google Play'den bir uygulama indirdiğiniz zamandır. İlk olarak, Google Play etkinliği, indirilecek içeriği seçmeniz için görsel arayüz sağlar. Uygulamaların listesi tek bir etkinlik olabilir; "yükle" düğmesini tıkladığınızda, onay veya ödeme iletişim kutusunu göstermek için başka bir etkinlik başlatılır. Onayladığınızda, iletişim etkinliği bir hizmeti başlatır. Hizmet, etkinlik sona erdiğinde ve artık çalışmadığında bile içeriği indirmeye devam edecektir.

Ancak yeni uygulama indirilirken telefonun İnternet bağlantısı kesilebilir. Böyle bir durumda, Google Play'in indirme hizmeti, ağ bağlantısı değişiklikleriyle ilgilendiğini söylemek amacıyla bir filtre ile bir yayın alıcısı kaydeder ve ardından hizmet kendini durduracaktır. Telefon İnternete bağlandığında, sistem bir olay yayınlar. Android, bu etkinliği bekleyen diğer yayın alıcılarıyla birlikte Google Play hizmetinin kayıtlı yayın alıcısını başlatacaktır. Bu durumda, yayın alıcısı indirme hizmetini tekrar başlatacaktır. Hizmet, indirme işlemi ilerledikçe bildirimler oluşturur ve bittiğinde, diğer uygulamalara yeni paketin yüklendiğini bildirmek için kendi yayınını gönderir ve ardından kendini durdurur. Buna karşılık, diğer uygulamalardan yayın alıcıları başlayacak,

Özetle:-

  • Etkinlik, ekrandaki bir pencereyi temsil eder; bir hizmet muhtemelen uzun süre çalışan bir arka plan görevi gerçekleştirir; bir yayın alıcısı bir olayı işlemek için kısa bir süre çalışır.
  • Her üçü de farklı bir mekanizma kullanarak niyetler kullanmaya başlarlar. Başlatma uygulaması, hangi tür bileşenin başlatılacağını açıkça belirtmelidir (her durumda farklı bir yöntem çağırarak).
  • Bir uygulama bir etkinlik kullanarak bir etkinlik başlattığında, yalnızca bir etkinlik başlatır (hangisini seçmenize izin vermek için "... kullanarak işlemi tamamla" iletişim kutusunu gösterir) ve aynı şey hizmetler için de geçerlidir, ancak bir amacı yayınlamak birkaç yayın başlatabilir alıcıları, muhtemelen farklı uygulamalardan.
  • Bir kullanıcı olarak doğrudan etkinliklerle etkileşime girersiniz; servislerle etkileşimde bulunmazsınız, ancak telefonu yavaşlatabilir ve kaynakları tüketebilirler; yayın alıcılarıyla etkileşime girmezsiniz ve kısa ömürlü oldukları için onları yönetme konusunda endişelenmenize gerek yoktur.

Çok faydalı bir cevap. Sadece bir şeyi onaylamak istiyorum: kullanıcılar tarafından devre dışı bırakılan uygulamalara ne olur? Android, kayıtlı oldukları amaçlarla yayın alıcılarına hiç başladı mı? Veya bu devre dışı bırakılan uygulamalar hizmetlerini arka planda çalıştırabilir mi? Yeniden başlattıktan sonra bile devre dışı bırakılan uygulamalar için Zorla Durdur düğmesi neden gri görüntülenmiyor? Faaliyetlerinin başlatılamayacağı açık.
Firelord

@Firelord Yeni bir sorunuz varsa, bunu yeni bir soru olarak göndermelisiniz. Yorumlar, derinlemesine yanıtlara izin vermez ve sorunuzu diğer ziyaretçiler için görünür hale getirmez.
Dan Hulme

harika bir gönderi, ama aslında dört bileşen var. İçerik Sağlayıcılar eksik.
Alexandre Martin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.