0

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

  1. 传递状态及其MapActivity触发的任何意图,然后MapActivity通过发送重新创建活动的意图让被切换的活动重建。此外,MapActivity将设置为使意图一次只创建此活动的一个实例。这种方法存在缺陷,因为该活动有多个退出路径,因此需要更改所有退出路径以支持这一点。
  2. 将 替换MapActivity为模拟活动,该活动在其onResume()方法或其他内容中重新创建活动,然后您切换到的活动可以保持幸福地不知道此问题。这种方法的问题是我不知道我应该如何去创建这个模拟活动,并且还激发了一个意图来启动我想要切换到的活动。

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

编辑:执行选项 2 的一种可能方法是使模拟活动成为在它的onCreate(). 但是,一个人只需要小心,如果onCreate()因为正在重建活动而再次调用该活动,则该活动不会再次启动目标活动。这可以通过检查savedInstanceStateis来完成null

4

1 回答 1

0

您应该在清单文件中使用 SingleInstance 属性,这会将较早启动的实例带到后台堆栈的顶部

<activity android:launchMode="singleInstance"/>
于 2011-11-18T10:28:52.353 回答