从一个活动向另一个活动发送消息[重复]
Posted
技术标签:
【中文标题】从一个活动向另一个活动发送消息[重复]【英文标题】:Send message from one activity to another [duplicate] 【发布时间】:2013-04-07 12:09:02 【问题描述】:我有一个活动(Activity_A)
,它有一个handler
,是来自外部library
的receiving messages
。问题是Activity_A
启动了活动Activity_B
。当Activity_B
启动时,Activity_A
receives a message
在我想“发送”到Activity_B
的handler
上。
怎么做?
我无法将handler
从Activity_A
移动到Activity_B
,因为某些接收的messages
必须由Activity_A.
管理
我想避免使用global/static variables
。
当我创建intent
时,是否可以以某种方式在Activity_A
中保存对Activity_B
的引用?如何将 message
从 Activity_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_A
和Activity_B
可以定期查询服务“来了新消息?”使用Timer。
【讨论】:
我更新了我的答案,请检查一下。【参考方案2】:应用程序不能那样工作。如果您希望活动完成某些工作,它必须对用户可见。 您可以考虑 Service 做后台工作(即传感器处理),或制作 Activity B 片段 - 然后 Activity A 将仍然在前台,而它的片段对用户可见。
【讨论】:
以上是关于从一个活动向另一个活动发送消息[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]