MapActivity实例管理

时间:2011-11-18 10:12:58

标签: android mapactivity

我有一个MapActivity子类,我想保留堆栈,但是我不能在同一个进程中保留MapActivity的多个实例。所以我想出了两个方案来实现这个目标:

  1. 传递MapActivity的状态以及它触发的任何意图,然后让切换的活动通过发送重新创建活动的意图来重建MapActivity。此外,将设置MapActivity,以便意图一次只创建此活动的单个实例。这种方法存在缺陷,因为此活动有多个退出路径,因此需要更改所有这些路径以支持此操作。
  2. MapActivity替换为使用onResume()方法或其他方式重新创建活动的模拟活动,然后您切换到的活动可以保持幸福地不知道此问题。这种方法的问题是我不知道如何创建这个模拟活动,并启动我想要切换到的活动的意图。
  3. 所以我的问题是,有更好的方法可以做到这一点,如果没有,如果有可能,我将如何进行选项2?

    编辑:执行选项2的一种可能方法是使模拟活动成为在onCreate()中为您启动目标活动的航点。但是,必须要小心的是,如果因重建活动而再次调用onCreate(),则该活动不会再次启动目标活动。这可以通过检查savedInstanceState是否为null来完成。

1 个答案:

答案 0 :(得分:0)

您应该在清单文件中使用SingleInstance属性,这会将先前启动的实例带到backstack的顶部

<activity android:launchMode="singleInstance"/>