Android Activity启动模式分析
2017-09-16 10:36
381 查看
Android Activity启动模式分析
standard 标准启动模式singleTop 栈顶复用模式
singleTask 栈内复用模式
singleInstance 全局单例模式
standard 标准启动模式
该模式也是Android中activity默认的启动模式,每次启动目标activity时,都会创建一个新的实例,添加到当前的Task中,看下图:原有栈中含有A-B-C三个activity,现在由C启动目标B,则看到在栈顶添加了一个新的实例B。singleTop 栈顶复用模式
在这个模式中又分为三种情况:1、在当前栈中已经有了某个activity的实例,并且该activity位于栈顶,在这个时候启动此activity不会创建新的实例,而是复用栈顶实例,通过传入Intent对象,回调onNewIntent()方法.看图:当前task中含有A-B-C三个activity,启动ActivityC时,不在创建新的实例,直接复用位于栈顶的ActivityC。
2、在当前栈中已含有某个activity的实例,但是该activity并不是位于栈顶的情况下,启动该activity时,是和standard模式一样的,会创建新的实例。如图:启动原有栈中的B。
3、在当前栈中不含某个activity的实例时,同样和standard模式一样,创建新的activity实例。如图:原有栈中含有A-B-C三个activity,启动ActivityD时,则在当前栈中新建一个实例。
singleTask 栈内复用模式
在该模式下,关系到一个taskAffinity属性。在Manifest中用android:taskAffinity指定该属性值,启动activity时会根据taskAffinity去寻找当前是否存在一个对应名字的任务栈。1、如果不存在,则会新建一个栈,把新创建的activity实例加入栈中。如图:原有栈中含有A-B-C三个activity,现要从C启动一个ActivityD,而ActivityD声明了android:taskAffinity=”Task1”,会先寻找Task1是否存在,如果不存在,则创建一个新的栈Task1,把ActivityD添加到Task1中。
2、如果存在,如图,原有栈中含有A-B-C三个activity,其中ActivityA定义了android:taskAffinity=”Task”这个属性,当我们要从位于栈顶的C启动A时,这个时候由于Task已经存在,Task中也已经包含了A的实例ActivityA,因此,在这个过程中,位于ActivityA上面的activity会全部出栈,回调onNewIntent()方法启动ActivityA。Task栈中只有一个ActivityA。
注意:上面图的栈中Task是已经含有ActivityA的实例了,假设现在要启动ActivityD,这时候并没有D的实例,所以会在栈顶添加一个D的实例,(即在C的上面添加)如图:
singleInstance 全局单例模式
该模式下启动activity时会开启一个单独的栈存放该activity的实例。栈中要是已存在activity实例,则不会创建新的实例,直接复用,回到onNewIntent()方法,否则会新建一个activity实例。相关文章推荐
- Android 基础功 - activity启动模式深入理解分析
- Android Activity启动模式分析
- Android Activity的生命周期和启动模式(一)——典型情况下的生命周期分析
- 关于Android之activity的四种启动模式分析
- Android Activity启动模式分析
- Android多任务切换与Activity启动模式SingleTask之间关系的分析
- Android学习之路------activity的四种启动模式分析
- Android Activity启动模式分析
- Android多任务切换与Activity启动模式SingleTask之间关系的分析
- Android Activity启动模式分析
- Android Activity启动模式分析
- Android Activity启动模式分析
- android activity 的启动模式
- Android 2.3 Activity启动模式浅析
- anandroid activity的启动模式 《转》
- 【Android基础】Activity的启动模式(android:launchMode)
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)---Android系统的三种启动模式
- Activity的启动模式分析-之二
- Android中的Activity四种启动模式(launchMode)
- Android应用程序内部启动Activity过程(startActivity)的源代码分析