2011-11-18 74 views
0

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

  1. 传递MapActivity的状态,它激发任何意图一起,然后让该得到交换活动到重建MapActivity通过发送重新创建活动的意图。另外,将设置MapActivity,以便意图一次只创建此活动的单个实例。这种方法存在缺陷,因为此活动有多个退出路径,所以需要对其进行更改以支持此操作。
  2. 用一个模拟活动替换MapActivity,该模拟活动可以在onResume()方法或其他方法中完成活动的重新创建,然后您切换到的活动可以保持幸福而不知道此问题。这种方法的问题是我不知道我应该如何去创建这个模拟活动,并且发起一个意图来启动我想要切换到的活动。

所以我的问题是,这是否有更好的方法来做到这一点,如果不是这样,如果可能的话,我将如何去做选择2?

编辑:做选项2的一种可能方法是使模拟活动成为一个航点,为您启动目标活动onCreate()。但是必须注意,如果onCreate()因为活动正在重建而被再次调用,那么它不会再次启动目标活动。这可以通过检查savedInstanceStatenull来完成。

回答

0

你应该在清单文件中使用SingleInstance属性,这将带来较早启动的实例到堆栈中

<activity android:launchMode="singleInstance"/> 
+0

是的,我在做这个规划的顶部,但我想要做的是保持后退堆叠。所以如果A是地图而B是另一个活动并且用户导航A-> B-> A-> B-> A。我希望它向用户显示后退栈是ABABA。但是我想要实现这一点,而不需要实际拥有多个A实例。这是非常困难的部分。 – JPvdMerwe