将bundle传递给设置为singletask的活动

所以我有一个运行asynchtask的MapActivity,偶尔会更新它在地图上显示的内容(通过字符串)。 我最初在创建活动时从意图传递此字符串。 然后,如果单击地图上的其中一个drawable,它将打开一个新活动,然后可以使用不同的字符串设置创建新的mapview(同一个类)。 我遇到的问题是我只希望一次运行mapview的一个实例。 因此我在清单中设置了android:launchmode =“singletask”。 这是因为它将mapactivity带到了前面,但有没有办法向它发送一个新的intent bundle来获得它需要的字符串的新设置? 我尝试从包中重新添加额外内容,但它似乎保留了旧包,而不是传递给它的新意图。 我不确定是否要执行startActivityForResult,因为第二个活动可能要也可能不想更新原始活动。

我希望这是有道理的。 如有必要,我可以发布代码,但我认为这应该可以解释我的情况。

当您的活动标记为singleTask已经运行并且singleTask发送新的Intent时,将调用onNewIntent来告诉您它。

默认情况下,在该调用返回后,此新Intent不会以任何方式存储,并且默认实现不执行任何操作。 如果覆盖onNewIntent ,则可以直接从那里处理附加到新intent的额外内容和/或使用setIntent将新意图附加到Activity,以便将来的getIntent().get*Extra(...)调用将返回更新的数据。

请注意,有一种特殊情况:如果您的singleTask活动在其任务中启动了另一个活动(即没有NEW_TASK标志的可嵌入活动),当您的活动收到意图时,该活动将到达前台,但意图本身将随后默默地放弃。 小心一点。 有关详细信息,请参阅开发指南 。