Android活动 - 远程服务aidl双向连接

时间:2012-11-11 12:47:57

标签: android

我有两个问题:

  1. 我知道对于连接活动远程服务,我必须使用 AIDL 。 我尝试了这个,它的工作,但我只能找到一种方式连接的例子。简单来说 - 从服务中读取一些东西(按活动)。但我需要求解将一些数据发送到活动(由服务提供或从服务提供)。它非常重要,因为服务必须在事件发生后立即向活动发送一些信息(从网上获取数据)。
  2. 是否可以从远程服务再次关闭应用程序(活动)?
  3. 任何建议都将不胜感激。

    此致

    ARTIK

2 个答案:

答案 0 :(得分:9)

  

这非常重要,因为服务必须在事件发生后立即向活动发送一些信息(从网上获取数据)。

您可以使用AIDL进行双向通信。您不仅需要通过AIDL公开服务接口,还需要通过具有回调.Stub的客户端公开回调接口,并在参数中将其实例提供给服务接口上的方法。这有点复杂 - 这里有一对来自my book的示例应用程序演示了这种技术:

  

是否可以从远程服务再次关闭应用程序(活动)?

您的服务可以致电startActivity(),但通常这是一个坏主意。用户可能正在做其他事情,当你的活动突然出现在前台时。有时,用户可能认为您的活动更重要,但并非总是如此。请考虑使用Notification,让用户知道您的应用中有某些内容需要用户注意。

答案 1 :(得分:1)

首先,在您的服务中创建一个私有的resultreceiver变量。然后创建一个方法,通过连接的活动设置此resultreceiver。然后使用AIDL通过您刚刚创建的方法将resultreceiver传递给活动中正在运行的服务。然后在服务中使用resultreceiver.send,如果resultreceiver不为null。

一些让你入门的例子  http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1

http://chrisrisner.com/31-Days-of-Android--Day-28 - 意图-部分-3 - 服务的意图