首先一定要理解android中task(任务)是一个栈结构的对象,可以存储Activity对象。
1.stander启动模式
在AndroidManifest.xml的activity标签中写入android:launchMode="standard"
然后在该acitivity中使用intent调用自己,并在TextView中显示this.toString(),自己的名称
会发现每按一次TextView所显示的序列号都是不一样的。
说明task栈中只存了多个Activity对象。
2.singleTop启动模式
在AndroidManifest.xml的第一个activity标签中写入android:launchMode="singleTop"
然后再建立第二个acitivity,由第一个activity调用第二个acitivity后,再返回第一个activity时会因为第一个acitivty不在栈顶,重新建立一个第一个activity。
3.singleTask启动模式
在AndroidManifest.xml的第一个activity标签中写入android:launchMode="singleTask"
然后再建立第二个acitivity,由第一个activity调用第二个acitivity后,再返回第一个activity时会因为第一个acitivty不在栈顶,而把比第一个acitivity高的对象都挤出去,使得第一个activity显示出来。
4.singleInstance启动模式
在AndroidManifest.xml的第一个activity标签中写入android:launchMode="stander",第二个activity标签中写入android:launchMode="singleInstance"
由第一个activity调用Intent进入第二个acitivity后,第二个acitivity会查看是否已经由存在一个新task栈只有第二个acitivity,如果没有的话就重新开辟一个新的task专门存放第二个acitivity,再由第二个acitivity调用Intent进入第一个acitivity,第一个acitivity还是原来的acitivity对象并没有新建,但当第一个acitivity调用Intent进入第二个acitivity时,新的task栈中会实例化新的第二个activity对象,如此循环往复。当点击back按钮时会从第一个acitivity退回新的task栈的栈顶,如果新的栈中被实例了5个第二个activity(相当于你前面已经五次通过Intent从第一个acitivity进入第二个acitivity中),那么就必须按5次back才会跳回,第一个acitivity的那个栈。