Android服务 - 服务和服务 - 活动双向通信

时间:2016-02-23 22:29:39

标签: android

我正在撰写针对SDK21的Android应用。目前我需要粘合一些逻辑,我似乎无法找到一种方法。该应用有多个活动,两个Services在后​​台运行,其中一个导出。

逻辑流程应如下:

  1. 本地服务侦听蓝牙连接。建立连接后,每个传入的消息都打包到一个对象中。连接另一端的一方正在等待回复。
  2. 对于每个传入的消息,需要将创建的对象发送到导出的服务,该服务最终将回复。
  3. 导出的服务需要启动活动(编辑:包含在我的应用程序中)并等待用户执行操作。根据操作的结果,服务将生成一个回复并将其发送回本地服务(在所有可能的情况下都会生成一个回复),而这反过来应该将它(以byte []格式)发送回另一个方。
  4. 本地服务< --->导出的服务< --->活性

    假设这样做是可能的,我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

是的,你可以。你需要使用AIDL,这是一个痛苦的问题http://developer.android.com/guide/components/aidl.html AIDL是Android用来让内部服务和应用程序相互通信的方法,例如键盘与活动应用程序交谈。

答案 1 :(得分:0)

试试这个:

  1. 本地服务(或"其他应用程序")创建一个以这种方式准备的PendingIntent,它可以用于在结束时发回响应(使用直接类,所以只有收件人才能收到回复,无需广播)

  2. 消息对象和PendingIntent在Bundle中发送到导出的Activity

  3. 活动会询问用户,并根据用户交互将消息+交互+ PendingIntent发送给服务。这是必需的,因为它可以轻松地将用户交互发送到服务。

  4. 服务进行计算并准备响应

  5. 服务使用PendingIntent

  6. 发回响应

    你也可以这样做:

    2B。客户端将PendingIntent和消息发送到导出的服务,

    3B。导出的服务启动活动

    4b中。活动向导出的服务发送另一个意图,其中包括消息+用户的选择

    5b中。导出的服务准备响应

    6b中。导出的服务使用PendingIntent

    在Bundle中发回响应