如果已经创建了Activity,又调用了startActivity()会发生什么?

8
我想在另一个Activity中使用新的Intent启动我的MainActivity。这两个Activity位于同一应用程序中,第二个Activity实际上是从MainActivity启动的。情况如下:
1. 使用Intent创建MainActivity; 2. MainActivity启动SecondActivity(但MainActivity尚未被销毁。它只是停止了); 3. SecondActivity使用新的Intent启动MainActivity(SecondActivity未关闭)。
MainActivity没有被标记。我的意思是,清单中的Activity启动模式未设置(因此,它是默认值)。
我想知道MainActivity的生命周期和Intent会发生什么变化。
Activity是否重新创建?是否调用onCreate()方法?然后,是否存在两个onCreate()方法但没有onDestroy()方法?还是新的MainActivity被新创建了,那么将有两个MainActivities?getIntent()方法的Intent会被覆盖吗?
我知道singleTop Activities会调用Activity.onNewIntent()方法。这种情况下,onNewIntent()方法是否会被调用?
提前感谢您的回答。

实现所有Activity生命周期并进行测试../ - Sam
2个回答

2
活动被重新创建了吗?onCreate()方法被调用了吗?那么onCreate()会被调用两次,是的,是的,因为一个活动的默认启动模式是“standard”。具有标准启动模式的活动将根据需要创建新实例。
getIntent()方法返回的Intent对象会被覆盖吗?据我所知,它仍然是相同的Intent。

每当调用startActivity时,都会创建MainActivity的新实例吗?谢谢您的回答。 - Naetmul

2
如果您对具有默认启动模式的Activity调用startActivity()(即,在清单或Intent中都没有提及任何启动模式),则会创建该Activity的新实例。
例如,A启动了B,然后B再次启动了A,那么Activity堆栈就是A - B - A。此时按返回键将带您回到B,然后是A。
您可以参考来自Android的任务和返回栈文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接