SORU
27 Ocak 2013, Pazar


Android Broadcast Receiver vs Servisi

Yayın Alıcısı ve android Hizmet arasındaki farkı açıklığa kavuşturmak için çalışıyorum.

Bir faaliyet bir niyet ile startService arayarak bir servis başlatmak mümkün olabilir.

Yayın alıcısı kodu veya bildirim olarak kaydedilebilir ve sendBroadcast ile çağrılabilir.

Ne zaman bir maçı diğerini kullanırsınız?

Birden fazla yayın alıcısı aynı niyet için dinleme ve bu hizmet ile durum böyle DEĞİL anladığım kadarıyla.

CEVAP
27 Ocak 2013, Pazar


Hizmetleriarka plandaki bir eylemi gerçekleştirmek için belirli bir süre için, Kullanıcı planda ne olursa olsun (kullanıcı aktiviteleri arasında geçiş olabilir) anlamına geliyordu. İyi bir örnek bir müzik çalar servis - kullanıcı müzik çalar uygulaması ile müzik çalmaya başlar ama ne zaman müzik çalmaya devam eder uygulamasından çıkın.

Hizmetleri de sağlamak/çoklu uygulamalar arasında ortak bir kaynağa erişmek ve yönetmek için yararlıdır. Bu genellikle sistem kaynakları, sensörler gibi kullanılır.

Yayın alıcıları(genellikle bir hizmet veya sistem olay tarafından gönderilen) bir niyet karşılık, bir şeyler yapmak, ve yapılması gerekiyordu. Burada bir örnek olabilir kullanıcı dokunur bir NFC özellikli telefona etiketi, sistemin yarattığı bir niyet için, ve kayıtlı alıcı işler bunu değiştirmek için bazı ayarları değiştir ses, bluetooth, vs).

Bir niyet sendBroadcast üzerinden yayın olduğunda gönderilirtümniyet eşleşen alıcıları filtreler.


Örnek 1: Kevin Bacon kopuşun derece hesaplamak için bir web sitesi ister bir fonksiyon (kullanmak istediği herhangi bir uygulamadan kullanılabilir) ifşa etmek istediğinizi Varsayalım.

Bu örnek olduğunu unutmayın "bir şey yap ve dön", uzun süren bir arka plan işlemi gerçekleştirmek için karşı çıktı.

Bunu çeşitli yollarla uygulamak olabilir:

Tüm kullanıcılar kendi uygulama içine derleme kitaplığı projesi oluşturun.

  • Şimdi, kod birden fazla kopyası vardır ve farklı versiyonları olabilir.
  • Toplu değil ya da her istek olarak önbellek istekleri birbirinden bağımsız olarak ele alınır.

Yayın alıcısı her isteği işlemek için oluşturun.

  • Uygulamanız bir Niyet Pastırma soru sormayı kabul etmek yayın alıcısı kaydeder
  • Her uygulama soru sormak için bir Niyet gönderir.
  • Yayın alıcısı Niyet ve ya kabul eder
    • Bir hizmet isteği sonucu isteyenin Niyeti gönderir işlem yapın, geçer
    • Gönderir Google Cloud bitince mesaj kullanarak cevap verebilecek bir sunucuya bir istek
  • Tüm istekleri tek bir uygulama üzerinden gitmek çünkü,/cache sonuçlar toplu edebilirsiniz
  • Bu her zaman senkronize değildir
  • API "Niyet işlevselliği göstermek için değil." -

Her isteği işlemek için bir hizmet oluşturmak

  • Uygulamanız istekleri işlemek için bir hizmet sağlıyor ve bir Bağlayıcı veya AİDL kullanarak bir API sunar
  • API senkron (doğrudan arama ve dönüş) ya da asenkron (dinleyici kayıt izin ve sonuç hazır olduğunda çağrı dinleyici) olabilir. Ancak işlem çok hızlı olması bekleniyor senkron seçmelisiniz; sunucu çağrıları daha sık uyumsuz olarak ele alınmalıdır
  • API "yöntemini çağırır" - işlevini duyurmak için çok dostça bir şekilde

Örnek 2: bazı veri analizi veri başka izler de bulmak için yapmak istiyorsunuz

Arka Plan İş ParçacığıEğer tüm işlem kullanıcı aynı Etkinliği aynı uygulama içinde iken bir şey olursa, bir arka plan iş parçacığı (ya da bir arka plan iş parçacığı yöneten bir AsyncTask) iyi bir yaklaşım olurdu

Hizmetİsterseniz kullanıcı izni çıkış uygulama sırasında işlem olarak gerçekleştirilen (ve onlara haber sonuçları daha sonra......), ya da izin ver onlara ilerleme ile birden fazla etkinliği aynı uygulama sırasında işleme olarak yapılan bir Hizmet olurdu daha iyi bir yaklaşım

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • stewmurray47

    stewmurray47

    1 Kasım 2006
  • Trulia

    Trulia

    29 Kasım 2006
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012