10

我有两个问题:

  1. 我知道对于连接活动远程服务,我必须使用AIDL。我试过这个,它的工作,但我只能找到一种方式连接示例。简而言之 - 从服务中读取一些东西(通过活动)。但我需要解决将一些数据发送到活动(通过或从服务)。这非常重要,因为服务必须在某些事件发生后立即向活动发送一些信息(从网络获取数据)。
  2. 是否可以从远程服务再次关闭应用程序(活动)?

任何建议将不胜感激。

问候

阿尔蒂克

4

2 回答 2

9

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

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

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

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

于 2012-11-11T13:15:55.250 回答
1

First, create a private resultreceiver variable in your service. Then create a method to set this resultreceiver via a connected activity. Then use AIDL to pass on a resultreceiver to the running service from the activity via the method you just made. Then in the service use resultreceiver.send if the resultreceiver is not null.

A few examples to get you started http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1

http://chrisrisner.com/31-Days-of-Android--Day-28–Intents-Part-3--Service-Intents

于 2013-02-22T11:51:31.677 回答