android Local Service如何与应用程序中的多个活动进行通信?

时间:2012-12-11 21:22:27

标签: android

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

作为主要活动的活动A将从服务中获取一些数据。服务正在与Servlet通信并从servlet中获取数据,我将发送到我的活动A,此活动将显示数据。我通过单击按钮从活动A调用新活动。活动A将向活动B发送一些数据。我使用Intent在活动A和活动B之间共享数据。活动B有一些按钮,它们将更新活动B中的数据并将其发送给服务,服务将发回对活动B的回应。

我知道某项活动如何与服务进行通信,但我不知道服务如何与两项或多项活动进行通信。

2 个答案:

答案 0 :(得分:1)

在活动B中与Service进行通信的方式与在活动A中进行通信的方式相同。我假设您正在注册某种形式的BroadcastReceiver,用于在活动中侦听服务中的内容答:你也可以在B中做到这一点,两个活动都将收到广播。

如果要将活动B中的命令发送到服务,您可以使用通常的startService将意图发送回服务。这不会重新启动您的服务,但它会重新发出一个新命令,您可以通过在服务中实现onStartCommand功能来拦截服务。您可以借助此生命周期图here了解有关服务功能的更多信息。

因此,您可以在清单中为两个活动注册广播接收意图,或者您可以通过开始在onStart上的两个活动中收听相同的意图过滤器并在您的onStart中再次关闭它们来在代码中执行此操作。的onPause。

答案 1 :(得分:1)

如果您的活动扩展了BroadcastReceiver,他们将侦听从应用程序发送的广播。在您的服务中,您需要在想要与活动进行通信时调用sendBroadcast(意图意图)。

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

以下是example如何实现这样的事情。