活动,服务和通知之间的沟通

时间:2016-04-30 03:17:19

标签: android android-activity broadcastreceiver android-service event-bus

我有3个组件需要彼此交谈:

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

通知从服务启动,需要具有按钮的自定义视图。单击任何按钮应该向活动和服务发送内容。

实现此目的的最佳方法是什么?

我看到的选项:

  • 广播接收器
  • 活动巴士

2 个答案:

答案 0 :(得分:1)

Eventbus绝对不是这里互动的考虑因素。 Eventbus仅在其创建的within the same process中起作用。这意味着它可能可能可以通过您与Eventbus的活动与您的服务进行通信,但前提是该服务是活动过程的一部分,通常他们不应该这样做。 ;是(那是什么线程)。所以我强烈建议不要这样做。并且通知绝对不在Eventbus的范围内。

您必须使用Android的文档化基础架构进行所需的互动。

来自Eventbus frontpage

  

可以很好地处理活动,碎片和后台线程

Broadcast receivers and intents是您正在使用的组件之间进行通信的最佳位置。查看answer to this question有关如何使用片段中的广播接收器接收来自服务的意图的信息。

如果您需要在服务和活动之间进行更紧密的沟通,也可以查看Service Binding,但如果可以的话,请尽量避免这种情况,因为它可能会很快变得非常复杂。

对于通知,它实际上取决于它们的复杂程度,但在本地开始只有building a Notification,您将开始了解可以用它们做什么。您会注意到他们也大量使用Intents

最后,阅读this article我写了关于(一)正确使用EventBus的文章。

答案 1 :(得分:0)

事件总线与组件交互的最佳解决方案