从一个活动向另一个活动发送消息[重复]

Posted

技术标签:

【中文标题】从一个活动向另一个活动发送消息[重复]【英文标题】:Send message from one activity to another [duplicate] 【发布时间】:2013-04-07 12:09:02 【问题描述】:

我有一个活动(Activity_A),它有一个handler,是来自外部libraryreceiving messages。问题是Activity_A 启动了活动Activity_B。当Activity_B 启动时,Activity_A receives a message 在我想“发送”到Activity_Bhandler 上。

怎么做?

我无法将handlerActivity_A 移动到Activity_B,因为某些接收的messages 必须由Activity_A. 管理

我想避免使用global/static variables。 当我创建intent 时,是否可以以某种方式在Activity_A 中保存对Activity_B 的引用?如何将 messageActivity_A 发送到 Activity_B

这里很重要的一点是,是的,我想将一个对象从一个活动传递到另一个活动,但不是在我创建新活动的那一刻(以包的形式传递对象)。每当我从外部库收到消息时,我都想异步执行此操作。

【问题讨论】:

您应该考虑一种完全不同的方法。当您启动 Activity B 时,您的 Activity A 可能会被完全杀死。您可能需要考虑使用广播接收器来处理/侦听特定意图(与消息几乎相同),而不是接收某些内容的处理程序? 【参考方案1】:

Activity_A

String msg = "message";
Intent i = new Intent(Activity_A.this, Activity_B.class);
i.putExtra("keyMessage", msg);
startActivity(i);

Activity_B

Bundle extras = getIntent().getExtras();
String msg = extras.getString("keyMessage");

希望对你有所帮助。

更新: 我描述了两个Activity交互的过程。但是,如果消息来自库,则当Activity_B 运行时 - 此方法不相关。 尝试将处理程序移动到某个Service,这将在您需要时起作用。并且从Activity_AActivity_B 可以定期查询服务“来了新消息?”使用Timer。

【讨论】:

我更新了我的答案,请检查一下。【参考方案2】:

应用程序不能那样工作。如果您希望活动完成某些工作,它必须对用户可见。 您可以考虑 Service 做后台工作(即传感器处理),或制作 Activity B 片段 - 然后 Activity A 将仍然在前台,而它的片段对用户可见。

【讨论】:

以上是关于从一个活动向另一个活动发送消息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]

从另一个活动发送实时消息

从一个活动获取变量到另一个活动

无法从一个模拟器向另一个模拟器发送消息

使用 433 mhz 发射器/接收器从一个 arduino 向另一个发送消息

在 Azure Service Fabric (API) 中从一个微服务向另一个微服务发送消息