java - 将包传递给设置为单任务的 Activity

标签 java android android-activity

所以我有一个运行异步任务的 MapActivity,它偶尔会更新它在 map 上显示的内容(通过字符串)。我最初是在首次创建 Activity 时从 Intent 中传递这个字符串的。然后,如果您单击 map 上的一个可绘制对象,它会打开一个新 Activity ,然后可以使用不同的字符串设置创建一个新的 map View (同一类)。我遇到的问题是我只希望一次运行 mapview 的一个实例。因此,我在 list 中设置了 android:launchmode="singletask"。这是因为它将 mapactivity 带到了前面,但是有没有办法向它发送一个新的Intent bundle 以获得它需要的字符串的新设置?我尝试从包中重新获取额外内容,但它似乎保留了旧包,而不是传递给它的新 Intent 。我不确定是否要执行 startActivityForResult,因为第二个 Activity 可能想要也可能不想更新原始 Activity 。

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

最佳答案

当标记为 singleTask 的 Activity 已经在运行并且一个新的 Intent 被发送给它时,onNewIntent会打电话告诉你这件事。

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

请注意,有一种特殊情况:如果您的 singleTask Activity 在其任务中启动了另一个 Activity (即没有 NEW_TASK 标志的可嵌入 Activity ),则该 Activity 将在您的 Activity 时出现在前台收到一个 Intent ,但 Intent 本身将被静静地丢弃。对此要小心。参见 the Dev Guide了解更多信息。

关于java - 将包传递给设置为单任务的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688763/

相关文章:

java - 如何通过翻转数组来翻转多边形?

android - JSON 错误 "org.json.JSONException: End of input at character 0 of "

java - 如何将 JSON 数组解析为 Android 列表

Android 在 onPause 中保存 Activity 动态创建的布局

android - android Activity 之间的自定义转换

java - 在 Spring MVC 中创建应用程序范围的 bean

java - Java 中 goto 语句的替代方法

android - 键入时未调用 TextInputEditText addTextChangedListener

java - ListView 和 ArrayAdapter 配置,android 应用程序

java - 如何从 protobuf 中的 UnmodifiableList 中删除一个项目