2012-11-28 12 views
26

Ben Context.registerReceiver(), Context.sendBroadcast(Intent) , and Context.unregisterReceiver()LocalBroadcastManager vs Context.registerReceiver(), Context.sendBroadcast (Intent) ve Context.unregisterReceiver() aynı mıdır?

kullanıyordum ama sınıf LocalBroadcastManager görünce, bu registerReceiver(), sendBroadcast(Intent) , ve Context gibi unregisterReceiver() sahiptir.

Kafam karıştı. LocalBroadcastManager'u ne zaman kullanmalıyım? Context'da aynı mı? isminde olduğu gibi

Selamlar,

Teşekkür ...

cevap

45

LocalBroadcastManager, uygulamanıza sadece kullanılabilir yayın yöntemlerinin bir uygulamasıdır. Bu, en büyük güvenlik olmak üzere, dikkat çekmek için daha az bir delik olan bazı avantajlara sahiptir. Uygulama açısından, akılda tutulması gereken birkaç şey vardır:

  • Bu sınıf dan Android Destek Kitaplığı
  • [CONTEXT] Bağlam sınıfının bir alt sınıfı olan çağrılar LocalBroadcastManager.getInstance([CONTEXT]) ile başında lazım yöntem , Etkinlik gibi. Bu sınıfı kullandığınızda, bu sizin için uygulamanızdır. Alıcıları kaydetmek ve sistem genelinde yayın yapmak için kullanmak başarısız olacaktır.

Bu sınıf, Bağlam ile aynı değildir, yalnızca Bağlamcının alıcı/yayın yöntemlerinin çok özel, yalnızca uygulamasıdır. Dinleyicinizin küresel (sistem çapında) yayınları dinlemesi ve yayınınız uygulamanızın dışındaki herhangi bir şeyi hedeflemesi gerekmediği zaman kesinlikle kullanmamalısınız.

+4

Doğru hatırlıyorsam, normal bir BroadcastReceiver'den daha verimlidir. – Luksprog

+1

Aşağıdaki @ Luksprog'un yorumu, uygulamanın süreci ile sınırlı olduğundan IPC yükünü ortadan kaldırdığı için daha verimlidir. – woot

+1

not LocalBroadcastManager, yapışkan bir yayın gönderemiyor – Fabricator

İlgili konular