如果对已创建的Activity调用startActivity()会发生什么?

时间:2013-05-31 03:28:12

标签: android android-activity android-lifecycle

我希望在我的其他MainActivity中使用新的Intent启动我的Activity。这两个活动位于同一个应用程序中,第二个活动实际上是从MainActivity启动的。所以场景是这样的:

  1. 使用Intent
  2. 创建MainActivity
  3. MainActivity启动SecondActivity(但MainActivity尚未销毁。它刚刚停止)
  4. SecondActivity使用新的Intent启动MainActivity(SecondActivity未关闭)
  5. 未标记MainActivity。我的意思是,清单中活动的启动模式未设置(因此,它是默认设置)。

    我想知道MainActivity的生命周期和意图会发生什么。

    是否重新创建了活动?是onCreate()吗?然后onCreate()被调用两次,没有onDestory()?或者新创建了MainActivity,并且会有两个MainActivities?来自getIntent()的意图会被覆盖吗?

    我知道对于singleTop活动会调用Activity.onNewIntent()。那么在我的情况下onNewIntent()没有被调用?

    提前致谢。

2 个答案:

答案 0 :(得分:3)

  

是否重新创建了活动?是onCreate()调用吗?然后是onCreate()   叫了两次,

是,是,是的,因为活动的默认launchMode"standard"。使用标准 Activity的{​​{1}}会创建一个新实例多少次。

  

来自getIntent()的Intent会被覆盖吗?

AFAIK,它仍然是launchmode

答案 1 :(得分:3)

如果为具有默认启动模式的活动调用startActivity()(即,您没有在清单或Intent中提及任何启动模式),则会创建活动的新实例。

例如,A启动B并且再次B启动A然后活动堆栈将是A - B - A.此时按回键将带您到B然后A。

您可以参考Android的Tasks and BackStack文档。