Activity的四种启动模式
在Manifest里可以调
standard:标准模式
singleTop:Task栈顶复用模式
singleTask:Task站内复用模式
singleInstance:全局单例模式
standard(多使用)
1.Activity是由任务栈管理的,每启动一个Activity,就会被放入栈中,按返回键,就会从栈顶移除一个Activity
2.sandard是默认的启动模式。每启动一个Activity,都会创建一个新的实例
例如:在默认情况下,从A还是跳转到A,栈名是一样的,但是hashCode不一样,证明是一个Activity创建了两个实例。即每次跳转都创建了一个实例
singleTop(多使用)
当要启动的目标Activity已经位于栈顶时,不会创建新的实例,会复用栈顶的Activity,并且其onnewIntent()方法会被调用;如果目标Activity不在栈顶,则跟standard一样创建新的实例
在栈里但不在栈顶
根部不在栈顶
singleTask(多使用)
可在Manifest里改栈名(自定义)
在同一个任务栈中,如果要启动的目标Activity已经在栈中,则会复用该Activity,并调用其onnewIntent()方法,并且该Activity上面的Activity会被清楚;如果栈中没有,则创建新的实例
singleInstance(较少)
全局复用,不管哪个Task栈,只要存在目标Activity,就复用。每个Activity占有一个新的Task栈
一个栈里只有一个Activity,只要Activity存在,就复用