Android双向服务通信

时间:2015-05-12 09:29:12

标签: java android android-activity service

我有一个活动和一个本地绑定服务。我已经启动并运行绑定服务,因此我可以通过服务器/绑定器界面上的功能处理从客户端到服务器的通信。

但是我需要双向通信,服务在某些时候需要通知活动(和用户)发生的事情,并且需要在继续之前等待用户操作。换句话说,我需要对客户端的服务器调用进行同步或阻塞。即当服务调用一个函数时,它会将一些参数传递给客户端,这将触发一个AlertDialog供用户使用,他们的选项将决定发送回服务的返回状态代码。在此之前,我希望服务暂停并等待它收到响应,然后将确定它的作用(服务继续运行,服务关闭等)。

Android中有没有办法做到这一点?我需要获得对我的活动的引用,它还需要公开这些阻塞方法,以便我可以从服务中调用它们然后等待响应。我已经为我的客户活动提供了一个界面,但我正在努力解决如何将此问题转移到服务上。我不想使用序列化并将引用添加为Intent extra,因为客户端和服务都有许多成员,我不希望它们是Serializable。

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 您可以使用BroadCasts将信息从服务发送到活动。
  2. Activity类中startService()的每次调用只会调用服务类的onStartCommand()方法,因此你可以在Intent中向它发送消息。
  3. 使用Service binding进行自己的信息传输。