Связь между Activity, Service и Notification

У меня есть 3 компонента необходимости разговаривать друг с другом:

Activity <---> Service <---> Notification
^                                ^
|                                |
----------------------------------

Уведомление запускается из службы, и оно должно иметь настраиваемый вид с кнопками. Нажатие на любую кнопку должно отправить что-то в действие и службу.

Каков наилучший способ реализовать это?

Варианты, которые я вижу:

  • Широковещательные приемники
  • Автобус событий

person expGuy    schedule 30.04.2016    source источник


Ответы (2)


Eventbus определенно не рассматривается здесь для взаимодействия. Eventbus будет функционировать только в пределах одного процесс, в котором он был создан. Это означает, что может быть возможно взаимодействовать с вашим Сервисом из вашего действия с Eventbus, но только если сервис является частью процесса Действия, чего обычно не должно быть (для этого и нужны потоки) . Так что я бы настоятельно не советовал этого делать. И уведомления точно не в рамках Eventbus.

Вы должны использовать задокументированную инфраструктуру Android для требуемых взаимодействий.

На главной странице Eventbus:

хорошо работает с действиями, фрагментами и фоновыми потоками

Приемники широковещательной рассылки и намерения — лучшее место для начала связи между используемыми вами компонентами. . Ознакомьтесь с ответьте на этот вопрос о том, как использовать широковещательный приемник в вашем фрагменте для получения намерений от службы.

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

Что касается уведомлений, это действительно зависит от их сложности, но начните с простого создания a Notification локально, и вы начнете понимать, что с ними можно делать. Вы заметите, что они также активно используют намерения.

Наконец, прочитайте эту статью. Я написал об одном (одном) правильном использовании EventBus.

person shredder    schedule 04.05.2016

Шина событий лучшее решение для взаимодействия с компонентами

person Ramesh sambu    schedule 30.04.2016