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

Fal*_*rri 3 java android android-activity

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

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

Wal*_*ndt 9

当您的活动标记为singleTask已经运行且Intent向其发送新内容时,onNewIntent将会调用该活动来告诉您相关信息.

默认情况下,这个新的意图并没有得到存储在调用返回之后的任何方式,并默认实现不做任何事情.如果覆盖onNewIntent,您可以直接从那里处理附加到新意图的setIntent附加内容和/或用于将新意图附加到您的Activity,以便将来的getIntent().get*Extra(...)调用将返回更新的数据.

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