我有一项启动另一项远程服务的服务。当第二个服务启动时,它使用IPC绑定到第一个服务,并且一切都很好。
我的问题是,我希望第一项服务能够与第二项服务进行对话(目前,只有相反的方式才能实施)。我可以用同样的Binder以某种方式做到这一点吗?或者我应该将第一个服务绑定到第二个服务? 也许有办法让两个服务以某种方式在同一个连接上交谈?
所有帮助将不胜感激。
维拉德
答案 0 :(得分:4)
如果您需要第一个Service
来调用第二个Service
上的方法,那么您需要从第二个Binder
获得Service
。如果您只想沟通,可以使用Broadcasts
并在第一个Receiver
中设置Service
。
答案 1 :(得分:1)
我认为使用相同绑定器的双向通信对于服务是不可能的。我已经尝试了很多,我发现的问题,使用您自己的示例的说法是从第二个服务检索的IBinder接口始终为null。 我的意思是,第一个服务将绑定到第二个服务以获得有效的IBinder与第二个服务进行通信。限制是当第二个服务调用第一个服务时,它不能将接口传递给第一个服务,因此可以进行回调(从第一个到第二个)。 需要建立与第二个服务的新的独立IBinder连接。希望有人可以帮助我们。
阿尔贝托。