【问题标题】: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 可能会被完全杀死。您可能需要考虑使用广播接收器来处理/侦听特定意图(与消息几乎相同),而不是接收某些内容的处理程序?

标签: android android-activity handler message


【解决方案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 将仍然在前台,而它的片段对用户可见。

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2023-03-28
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2017-01-07
    相关资源
    最近更新 更多