2

我已经浏览了有关 Stackoverflow 的一些主题,但找不到任何足够的答案“多个活动如何与 android 中的绑定服务通信?”。我在我的应用程序和 2 个活动中有一个简单的绑定服务。我已经在服务和活动之间建立了通信,但现在我在我的应用程序中又添加了一个活动。

作为主要活动的活动 A 将从服务中获取一些数据。服务正在与 Servlet 通信并从 servlet 中获取数据,我将把这些数据发送到我的 Activity A,这个 Activity 将呈现数据。我通过单击按钮从活动 A 调用新活动。活动 A 将向活动 B 发送一些数据。我Intent用于在活动 A 和 B 之间共享数据。活动 B 有一些按钮可以更新活动 B 中的数据并将其发送给服务,服务会将响应发送回活动B.

我知道一个活动如何与一个服务通信,但我不知道一个服务如何与两个或更多活动通信。

4

2 回答 2

1

在活动 B 中与您进行通信的Service方式与您在活动 A 中的操作方式相同。我假设您正在注册某种形式,BroadcastReceiver以侦听活动 A 中服务的内容。您也可以在 B 中执行此操作,并且两者都可以活动将收到广播。

如果您想从 Activity B 向服务发送命令,您可以使用通常startService的方式将意图发送回服务。这不会重新启动您的服务,但它只会向服务重新发出一个新命令,您可以通过在服务中实现该onStartCommand功能来在服务中拦截该命令。您可以在此生命周期图的帮助下阅读有关您的服务功能的更多信息,请点击此处

因此,您可以在清单中为这两个 Activity 注册广播接收意图,也可以在代码中通过在 onStart 中的两个 Activity 上监听相同的意图过滤器并在 onPause 中再次关闭它们来完成。

于 2012-12-11T21:43:08.423 回答
1

如果您的活动扩展 BroadcastReceiver,它们将侦听从应用程序发送的广播。在您的服务中,您需要在要与活动通信时调用 sendBroadcast(Intent intent)。

在 AndroidManifest.xml 文件中,您需要将意图过滤器添加到您希望服务与之通信的活动中,其中包括意图的操作名称。如果你想发送不同的意图,我相信你需要给他们不同的动作名称。

这是一个如何实现这样的事情的例子。

于 2012-12-11T21:46:52.663 回答