Как BroadcastReceiver может общаться с Сервисом - PullRequest
0 голосов
/ 04 мая 2019

Как BroadCastReciever может связываться со службой без привязки?

Я подумал, что это хорошая идея - использовать связующее в BroadCastReceiver, но после прочтения некоторой информации я понял, что это не очень хорошая идея. Я пытался найти проблему в stackoverflow, но все, что я нашел:

Q: "BroadCastReciver + binder"

A: "Нет, это плохая идея." (Без примеров, как общаться с сервисом без связующего)

1 Ответ

0 голосов
/ 07 мая 2019

Решение - LocalBroadcastManager.Благодаря LocalBroadcastManager мы можем отправлять трансляции между различными частями нашего приложения.

SEND_BROADCAST

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
        IntentFilter filter = new IntentFilter("com.onezero.EXAMPLE_ACTION");
        localBroadcastManager.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Toast.makeText(context, "=(", Toast.LENGTH_SHORT).show();
            }
        }, filter);

        Intent sintent = new Intent("com.onezero.EXAMPLE_ACTION");


        localBroadcastManager.sendBroadcast(sintent);

Получать трансляции

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
        IntentFilter filter = new IntentFilter("com.onezero.EXAMPLE_ACTION");
        localBroadcastManager.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // DO WORK
                setPlayPause(); //PAUSE MEDIAPLAYER IN MY CASE
            }
        }, filter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...