android四大启动模式

standard:

activity先进后出,后进先出

singleTop:

启动的activity是最上层的activity则不重新创建,并且不执行oncreate()和onstart()方法,而是执行onNewIntent()方法;反之,同standard

singleTask:

分为两种情况:

1.没有指定TaskAffinity(任务相关性),或者指定的TaskAffinity与包名相同

则在当前的栈中有需要启动的activity,则不创建activity,而是直接调用存在的activity,在调用的activity上面的activity则一一出栈,并且此activity不执行oncreate()和onstart()方法,而是执行onNewIntent()方法;反正,如果没有,重新创建

2.指定TaskAffinity属性(任务相关性),并且与包名不相同

重新创建新的栈并创建activity

singleInstance:

是singleTask的加强版,是singleTask的第二种情况,并且不需要制定TaskAffinity属性

重新创建新的栈并创建activity


补充:

allowTaskReparenting与TaskAffinity在一起会有不一样的效果

应用A启动ActivityC到应用B,然后应用B按Home键回到主界面,然后在打开应用B,还是在ActivityC界面

原理:因为ActivityC是从A的任务栈中转移到B的任务栈中,因为A的任务栈肯定和B的任务栈TaskAffinity不相同,所以B创建一个任务栈,然后把C移到新创建的任务栈中,所以C在应用B的新任务栈中


你可能感兴趣的:(android四大启动模式)