Как использовать LocalBroadcastManager?

Как использовать / локализовать LocalBroadcastManager как описано в документах google и в документе Service Broadcast ?

Я попытался это сделать, но для начала нет кода.

В документах говорится, что я должен использовать его, если я хочу делать трансляцию внутри себя в процессе моего приложения, но я не знаю, где искать это.

Любая помощь / комментарий?

Обновление : я знаю, как использовать трансляции, но не знаю, как получить LocalBroadcastManager в моем проекте.

    8 Solutions collect form web for “Как использовать LocalBroadcastManager?”

    Я все равно отвечу. На всякий случай кому-то это нужно.

    ReceiverActivity.java

    Действие, которое отслеживает уведомления для события с именем "custom-event-name" .

     @Override public void onCreate(Bundle savedInstanceState) { ... // Register to receive messages. // We are registering an observer (mMessageReceiver) to receive Intents // with actions named "custom-event-name". LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("custom-event-name")); } // Our handler for received Intents. This will be called whenever an Intent // with an action named "custom-event-name" is broadcasted. private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Get extra data included in the Intent String message = intent.getStringExtra("message"); Log.d("receiver", "Got message: " + message); } }; @Override protected void onDestroy() { // Unregister since the activity is about to be closed. LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); super.onDestroy(); } 

    SenderActivity.java

    Второе действие, которое отправляет / передает уведомления.

     @Override public void onCreate(Bundle savedInstanceState) { ... // Every time a button is clicked, we want to broadcast a notification. findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendMessage(); } }); } // Send an Intent with an action named "custom-event-name". The Intent sent should // be received by the ReceiverActivity. private void sendMessage() { Log.d("sender", "Broadcasting message"); Intent intent = new Intent("custom-event-name"); // You can also include some extra data. intent.putExtra("message", "This is my message!"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } 

    С помощью кода выше, каждый раз, когда нажимается кнопка R.id.button_send , Intent транслируется и принимается mMessageReceiver в ReceiverActivity .

    Результат отладки должен выглядеть следующим образом:

     01-16 10:35:42.413: D/sender(356): Broadcasting message 01-16 10:35:42.421: D/receiver(356): Got message: This is my message! 

    Я хотел бы ответить всесторонне.

    1. LocalbroadcastManager включен в android 3.0 и выше, поэтому вам нужно использовать библиотеку поддержки v4 для ранних выпусков. см. инструкции здесь

    2. Создайте широковещательный приемник:

       private BroadcastReceiver onNotice= new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // intent can contain anydata Log.d("sohail","onReceive called"); tv.setText("Broadcast received !"); } }; 
    3. Зарегистрируйте свой ресивер в onResume активности, например:

       protected void onResume() { super.onResume(); IntentFilter iff= new IntentFilter(MyIntentService.ACTION); LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, iff); } //MyIntentService.ACTION is just a public static string defined in MyIntentService. 
    4. unRegister приемник в onPause:

       protected void onPause() { super.onPause(); LocalBroadcastManager.getInstance(this).unregisterReceiver(onNotice); } 
    5. Теперь, когда локальная передача отправляется из активности или службы приложений, будет вызываться onReceive onNotice :).

    Редактировать: здесь вы можете прочитать полный учебник. LocalBroadcastManager: передача сообщения приложения Intra

    В Eclipse мне пришлось добавить библиотеку совместимости / поддержки , щелкнув правой кнопкой мыши мой проект и выбрав:

    Инструменты Android -> Добавить библиотеку поддержки

    Как только он был добавлен, я смог использовать class LocalBroadcastManager в своем коде.


    Библиотека совместимости Android

    Входящий конец:

    • Первый регистр LocalBroadcast Receiver
    • Затем обрабатывайте входящие данные о намерениях в onReceive.

        @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); lbm.registerReceiver(receiver, new IntentFilter("filter_string")); } public BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String str = intent.getStringExtra("key"); // get all your data from intent and do what you want } } }; 

    По отправке:

      Intent intent = new Intent("filter_string"); intent.putExtra("key", "My Data"); // put your all data using put extra LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 

    Как изменить глобальную трансляцию на LocalBroadcast

    1) Создать экземпляр

     LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this); 

    2) Для регистрации BroadcastReceiver

    замещать

     registerReceiver(new YourReceiver(),new IntentFilter("YourAction")); 

    С

     localBroadcastManager.registerReceiver(new YourReceiver(),new IntentFilter("YourAction")); 

    3) Для отправки широковещательного сообщения

    замещать

     sendBroadcast(intent); 

    С

     localBroadcastManager.sendBroadcast(intent); 

    4) Для незарегистрированного широковещательного сообщения

    замещать

     unregisterReceiver(mybroadcast); 

    С

     localBroadcastManager.unregisterReceiver(mybroadcast); 

    Когда вы будете играть достаточно с LocalBroadcastReceiver, я предлагаю вам попробовать EventBus от Green Robot, вы определенно поймете разницу и полезность этого по сравнению с LBR. Меньший код, настраиваемый по streamу приемника (UI / Bg), проверка доступности приемников, липкие события, события могут использоваться как передача данных и т. Д.

    Пример Activity и службы, реализующей LocalBroadcastManager, можно найти в документах разработчика. Я лично нашел его очень полезным.

    EDIT: ссылка с тех пор была удалена с сайта, но данные следующие: https://github.com/carrot-garden/android_maven-android-plugin-samples/blob/master/support4demos/src/com/ пример / Android / supportv4 / содержание / LocalServiceBroadcaster.java

    мы также можем использовать интерфейс для того же самого, что и для broadcastManger. Здесь я использую код testd для broadcastManager, но по интерфейсу.

    сначала создайте интерфейс:

     public interface MyInterface { void GetName(String name); } 

    2 – это первый class, который нуждается в реализации

     public class First implements MyInterface{ MyInterface interfc; public static void main(String[] args) { First f=new First(); Second s=new Second(); f.initIterface(s); f.GetName("Paddy"); } private void initIterface(MyInterface interfc){ this.interfc=interfc; } public void GetName(String name) { System.out.println("first "+name); interfc.GetName(name); } } 

    3 – вот второй class, реализующий тот же интерфейс, метод вызова которого автоматически

     public class Second implements MyInterface{ public void GetName(String name) { System.out.println("Second"+name); } } 

    поэтому с помощью этого подхода мы можем использовать интерфейс, функционирующий так же, как broadcastManager.

    Interesting Posts

    16 ГБ моей 32 ГБ памяти непригодны для использования, отмеченные как «зарезервированные аппаратные средства»

    Запуск службы (или служб) с помощью двойного щелчка без приглашения UAC

    Как запустить панель управления в качестве администратора?

    Панель задач Windows 7 в autohide, полностью ли она исчезает?

    Несмотря на то, что GIT НЕ хранит дельта файлов, можете ли вы откатить предыдущие версии файлов (неограниченное время?)

    Таблица разделов повреждена (USB-накопитель)

    Преобразование строки Unicode в экранированную строку ASCII

    Монтирование SSH / SFTP на Windows 7

    Компьютер не будет отключен после отключения питания

    Проблема с проблемой загрузки Windows 7 – с использованием BCD возможно

    Почему я должен использовать указатель, а не сам объект?

    Как скопировать изображение в буфер обмена из командной строки в Linux?

    Как я могу заставить bluetooth работать на Windows Server 2012?

    Как удалить первый символ из всех имен файлов в папке?

    Методология программирования WPF

    Давайте будем гением компьютера.