android - android本地服务如何与应用程序中的多个 Activity 进行通信?

标签 android

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

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

我知道一个 Activity 如何与一个服务进行通信,但我不知道一个服务如何与两个或多个 Activity 进行通信。

最佳答案

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

如果您想从 Activity B 向服务发送命令,只需使用常用的 startService 将 Intent 发送回服务即可。这不会重新启动您的服务,而只会向服务重新发出一个新命令,您可以通过在服务中实现 onStartCommand 函数来在服务中拦截该命令。您可以借助生命周期图 here 了解有关服务功能的更多信息。 .

因此,您可以在 list 中为这两个 Activity 注册广播接收 Intent ,也可以在代码中通过在 onStart 中开始监听两个 Activity 上的相同 Intent 过滤器,然后在您的暂停。

关于android - android本地服务如何与应用程序中的多个 Activity 进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828717/

相关文章:

android - 将数据从 Android 应用传输到外部数据库

android 如何在gridview中拉伸(stretch)行以填充屏幕?

Android Paint : . measureText() 与 .getTextBounds()

java - 将图像加载到自定义列表数组 - 格式错误的异常协议(protocol)未找到错误

android - 嵌套 fragment : Detect click on outer fragment from within inner fragment

Android获取最佳位置

android - 使用 Firebase 设置群聊的阅读状态

java - Java 中的本地化序号

android - 如何从android中的listView onItemClick获取项目?

android - 在android NDK中包含本地头文件时 undefined reference