2012-12-19 21 views
8

Android'in uyumluluk paketi, işlemimin içine yayın göndermeyi sağlayan LocalBroadcastManager'ı destekler. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.htmlLocalBroadcastManager vs callbacks'i kullanma

Şimdiye kadar uygulamalarıma farklı bölümleri arasındaki veri (asenkron ve senkron) aktarmak için geri aramaları (OnClickListener benzer Arayüzleri) kullanıyordu.

Birinin diğerinden daha iyi olup olmadığını merak ediyordum. Herhangi bir fikir?

cevap

6

LocalBroadcastManager, Intent'leri ve IntentFilter'leri kullanmanıza izin verir, böylece sistem genelinde yayınlanan yayınlardan yerel olanlara geçişi kolaylaştırır. Ayrıca, bazı kuyruk kodu vardır ve kendi kodunuzdan daha güvenilir olabilir (ya da uygulamanızın ne kadar karmaşık olduğuna bağlı olarak). Bunun dışında, aslında alıcıların listelerini hafızada tutar ve bir eşleşme bulmaya çalışır.

Başka bir alternatif, Square'in Otto (Guava'ya göre) gibi bir olay veriyolunu kullanmasıdır, bu da tip güvenliği ekler ve aynı derecede etkilidir.

1

Bildiğim kadarıyla, LocalBroadcastManager bir çekicilik gibi çalışır. Bu sorunsuz ve Intent içinde herhangi bir argüman geçebilir ve Dinleme sırasında geri alabilirsiniz. Tek güvenilirlik, yayın yöneticisinin sıraya girmesidir.

LocalBroadCastManager'ı ne zaman kullanmalısınız? Tek etkinliğiniz (FragmentActivity) ve tonlarca Fragment sınıfınız olduğunda, o zaman Single Activity içinde bir localBroadcastManager'a sahip olmak daha kolaydır.

Çok sayıda Etkinliğiniz varsa, bunu kullanmak yararlı olabilir, ancak yeni etkinlikleri başlatmak için zaten niyetleri kullandığınızı unutmayın. Bu nedenle, beklemede olan bir niyet varsa, bu Yayın Kuyrukta ve beklemeniz gerekecek.

Bu nedenle, en iyi kullanım sayısız Fragmanlar içeren Tek Etkinliktir.

+0

Düzenlemenizi geri aldım çünkü bir yorum olmalıydı ve düzenlemeniz ima ettiniz. Etkinlikler ve Fragmanlar birbirlerinin örneklerinin farkındadır. Geri aramalar (tüm Fragmanlar için bile genel bir arayüz) bile daha basittir (oluşturma, filtreler, kayıt olma, kayıt dışı tutma vb. Ile karşılaştırıldığında) ve aralarında herhangi bir nesne türünü geçirebilirsiniz. Yerel yayınlar, başka bir Nesnenin örneğine (örneğin Hizmetler) erişemediğiniz zamanlarda daha uygundur. –