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的新任务栈中