startActivity如何决定是启动已停止的活动还是创建新活动?

时间:2010-02-18 19:33:44

标签: android

长话短说,我有一个始终由LAUNCHER(即主屏幕)调用的LaunchActivity。然后它启动LoginActivity然后自行关闭。

这是流程:

  1. 用户启动应用
  2. LaunchActivity启动,启动 LoginActivity然后调用 完成()自己(此时 LoginActivity是唯一的Activity 在堆栈上)
  3. 用户按“主页”按钮,停止 LoginActivity
  4. 用户再次启动应用
  5. 当应用程序第二次启动时,可能会发生两件事:

    1. LaunchActivity启动,完成 本身然后STARTS LoginActivity
    2. LaunchActivity启动,完成 本身然后创建 LoginActivity,现在有两个 LoginActivitys在堆栈上。
    3. (2)似乎发生在我重启Eclipse和模拟器时(是的,我知道,黑魔法)。

      一些额外的信息:我没有使用任何启动标志,我的清单没有定义任何launchModes。

2 个答案:

答案 0 :(得分:3)

我想你想设置android:launchMode =“singleTask”这里有一个基本的解释:

http://groups.google.com/group/android-developers/browse_thread/thread/e29bd82a7fec43c6/44835d74b0af3f5f?lnk=gst&q=ellipsoidmobile#44835d74b0af3f5f

从链接“如果您的活动是从其他应用程序启动的,不使用单个应用程序 任务,但您希望这会导致您当前的应用程序到达前台 而不是在另一个应用程序的任务中启动该活动的新实例。 执行此操作的应用程序示例是浏览器。 “

通过阅读您的问题,这看起来就像您想要的那样。在LoginActivity上设置launchMode =“singleTask”,当LaunchActivity启动LoginActivity时,它应该重新启动现有的而不是创建第二个实例。

答案 1 :(得分:0)

我想这与LoginActivity是否需要在后台被杀死有关。正如activity lifecycle所解释的那样,如果系统需要资源,则可以终止已停止(不可见)的活动。