所以我有一个运行asynchtask的MapActivity,偶尔会更新它在地图上显示的内容(通过字符串)。我最初在创建活动时从intent传递此字符串。然后,如果单击地图上的其中一个drawable,它将打开一个新活动,然后可以使用不同的字符串设置创建新的mapview(同一个类)。我遇到的问题是我只希望一次运行mapview的一个实例。因此我在清单中设置了android:launchmode =“singletask”。这是因为它将mapactivity带到了前面,但有没有办法向它发送一个新的意图包来获得它需要的字符串的新设置?我尝试从包中重新添加额外内容,但它似乎保留了旧包,而不是传递给它的新意图。我不确定是否要执行startActivityForResult,因为第二个活动可能会也可能不想更新原始活动。
我希望这是有道理的。我可以在必要时发布代码,但我认为这应该可以解释我的情况。
答案 0 :(得分:9)
如果您的活动已标记为singleTask
且已向其发送新的Intent
,则系统会调用onNewIntent
来告诉您相关信息。
默认情况下,这个新的Intent在该调用返回后以任何方式存储 not ,并且默认实现不执行任何操作。如果您覆盖onNewIntent
,则可以直接从那里处理附加到新意图的附加内容和/或使用setIntent
将新意图附加到您的活动,以便将来的getIntent().get*Extra(...)
来电回复更新的数据。
请注意,有一种特殊情况:如果您的singleTask
活动在其任务中启动了另一项活动(即没有NEW_TASK标志的可嵌入活动),那么当您的活动收到意图时,该活动将会出现在前台,但意图本身将被默默地删除。小心一点。有关详细信息,请参阅the Dev Guide。