1.standard模式(默认启动模式)
每次启动都会为该Activity创建一个新的实例,并加入返回栈的栈顶
2.singleTop模式
如果Activity的启动模式设置为singleTop,在启动Activity时,如果发现返回栈的栈顶已经是该Activity了,则直接使用该Activity实例,不会再创建一个新的Activity实例
3.singleTask模式
如果Activity的启动模式设置为singleTask,在启动Activity时,系统首先会在返回栈中检查是否有该Activity的实例,如果有,则直接使用该Activity实例,不再创建一个新的Activity实例,并将返回栈中在该Activity实例之上的所有Activity出栈;如果没有,则创建一个新的Activity实例,并加入返回栈的栈顶
4.singleInstance模式
如果Activity的启动模式设置为singleInstance,在启动该Activity时,会建立一个新的返回栈来管理这个Activity。该模式主要是用于解决共享Activity实例的问题,将需要共享的Activity启动模式设置为singleInstance
假设有一个场景:
activity1--->activity2(singleInstance模式)
activity2--->activity3
然后依次back,则顺序为activity3--->activity1---->activity2。
因为activity2为singleInstance模式,启动时会新建立一个返回栈来进行管理(此时就可以对外形成共享了),接下来activity2--->activity3,因为activity3为默认模式,所以会和activity1在同一个task里
此时back,就会从activity3--->activity1;
再back,activity1会出栈,此时activity1和activity3所在的task为空了,所以会显示另一个返回栈里的activity2,即activity1--->activity2;
再back,所有返回栈都为空了,就退出了应用程序。