两个服务之间的Android通信

两个服务之间的Android通信,android,service,Android,Service,我知道活动可以使用IBinder接口与本地服务通信;我正在努力寻找两个服务之间的通信方式 具体来说,我让我的主服务启动一个IntentService来处理文件上传。我希望这个IntentService在上传完成后,在它死之前通知主服务 关于这将如何发生,您有什么想法吗?您必须使用BroadcastReceiver来接收意图,当您想要交流时,只需使用适当的值来制定意图 通过这种方式,您应该能够在任何组件之间进行双向通信。在Android中,有一种特殊的方式来完成类似您的任务。看看AIDL(官方文档

我知道活动可以使用IBinder接口与本地服务通信;我正在努力寻找两个服务之间的通信方式

具体来说,我让我的主服务启动一个IntentService来处理文件上传。我希望这个IntentService在上传完成后,在它死之前通知主服务


关于这将如何发生,您有什么想法吗?

您必须使用BroadcastReceiver来接收意图,当您想要交流时,只需使用适当的值来制定意图


通过这种方式,您应该能够在任何组件之间进行双向通信。

在Android中,有一种特殊的方式来完成类似您的任务。看看AIDL(官方文档中没有很好的文档记录,但网络上有一些额外的来源)。这是一种在放置在单独流程中的任何组件之间实现双向通信的方法。与BroadcastReceiver相比,使用它您将获得直接呼叫和回调,这将比依赖来自BroadcastReceiver中某个地方的东西要少一些麻烦

为了达到所需的效果,您必须定义一个回调接口和一个执行操作的接口(使用提供的回调或注册/取消注册方法)。然后,在使用第二个接口接收到一些命令后,应该执行该作业并通过回调返回结果。要实现异步完成,请在方法签名(返回类型)之前添加一个键work“oneway”。要分离输入和输出参数(如果需要),请在参数附近使用“in”、“out”和“inout”关键字

说到限制,只有原语、数组和包裹(以及包裹数组)可以在进程之间传输

要控制回调生命周期和操作原子性,请使用RemoteCallbackList存储已注册回调,并使用从BeginBrowdcast获得的列表副本通知收件人


如果您有任何问题,可以在这里询问。

我在IBinder上寻找一些东西-我的活动通过它进行交流。但我会继续实施bacstReceiver。。谢谢好的..伙计,实际上我不确定是否可以使用IBinder。好的,服务之间没有IBinder等价物。如果你愿意,我请求你给我的答案打分..我是StackOverflow的新手,没有任何东西阻止你从一个服务中调用
bindService()
,以便将另一个绑定到它。