详细分析 看这篇文章:http://www.cnblogs.com/fanchangfa/archive/2012/08/25/2657012.html
这里只说一些重点
Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
Activity的四种启动模式:
1. standard
模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。
2. singleTop
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。
3. singleTask
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
4. singleInstance
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
1. standard 没啥说的。
2. singleTop
注意在栈顶的情况,直接重用该实例,这时注意 Activity的生命周期是:
先onPause,然后调用 onNewIntent ,然后再 OnResume
3. singleTask
先创建实例
分两种情况:
a, 栈顶就是实例
这种情况下 与 singleTop 生命周期流程一样
返回 键顺序也一样
b, 栈顶不是实例,实例在栈顶下面
注意上面的生命周期流程
Activity界面流程:
操作流程: 打开 Standard Activity 1----》第一次 打开TopActivity -----》打开 Standard Activity 2--》第二次 打开TopActivity
返回键: 第一次----》Standard Activity 1; 第二次 退出app
说明了 在 第二次 打开TopActivity时 系统从栈顶 向下查找实例,找到了,就是把此Activity实例作为栈顶, Standard Activity 2 被丢弃了
4. singleInstance
先创建实例
分两种情况:
a, 栈顶就是实例
这种情况下 与 singleTop single生命周期流程一样
返回 键顺序也一样
b, 栈顶不是实例,实例在栈顶下面
与 singleTask 一样
那么,返回键呢?
Activity界面流程:
操作流程: 打开 Standard Activity 1----》第一次 打开InstanceActivity -----》打开 Standard Activity 2--》第二次 打开InstanceActivity
返回键: 第一次----》Standard Activity 2;第二次,Standard Activity 1; 第三次 退出app说明了 在 第二次 打开InstanceActivity时 系统从栈顶 向下查找实例,找到了,就是把此Activity实例直接移到了栈顶,这是与singleTask的区别
总结:以前也看了文章,都是看看而已,没有动手去做做,只有自己亲自去实践了,才能更好的理解,和发现没有讲到的东西。
从今以后,要告别眼高手低,多动手动脑,再次出发,改变自己。
试验用例下载地址:http://download.youkuaiyun.com/detail/wcuibo2009/7167329