2 服务沟通
Posted
技术标签:
【中文标题】2 服务沟通【英文标题】:2 Services Communicating 【发布时间】:2012-01-26 17:12:07 【问题描述】:我有一个启动另一个远程服务的服务。当第二个服务启动后,它使用 IPC 绑定到第一个服务,一切正常。
我的问题是,我希望第一个服务也能够与第二个服务通信(现在,只实现了相反的方式)。我能以某种方式使用相同的活页夹吗?还是我应该将第一个服务绑定到第二个服务? 也许有办法让两个服务以某种方式在同一个连接上通话?
我们将不胜感激。
弗拉德
【问题讨论】:
【参考方案1】:如果您需要第一个 Service
调用第二个 Service
上的方法,那么您需要从第二个 Service
获取一个 Binder
。如果你只是想交流,你可以使用Broadcasts
并在第一个Service
中设置一个Receiver
。
【讨论】:
所以基本上没有问题有 2 个服务,每个服务都拥有另一个的 Binder? 谢谢。我对此有一些问题..但我想我做错了什么。【参考方案2】:我认为使用同一个绑定器的两种方式的通信对于服务来说是不可能的。我已经尝试了很多,我发现的问题是,使用您自己的示例的说法是从第二个服务检索到的 IBinder 接口始终为空。 我的意思是,第一个服务将绑定到第二个服务,以便获得一个有效的 IBinder 来与第二个服务对话。限制是当第二个服务调用第一个服务时,它不能将接口传递给第一个服务,因此可以发生回调(从第一个到第二个)。 相反,需要建立到第二个服务的新独立 IBinder 连接。希望有人可以帮助我们解决这个问题。
阿尔贝托。
【讨论】:
你可能是对的。幸运的是,我不再需要这个功能了。但是单方面的交流似乎有点有趣.. 双边交流有很多用途,但是使用两个不同的 Ibinder,代码会变得混乱且不必要地冗长..以上是关于2 服务沟通的主要内容,如果未能解决你的问题,请参考以下文章