-
stardard
默认启动方式,不用配置,同一Activity每次开启每次创建,新建依次排队唯一栈顶,退出时,由新到旧退出。例如A1 Activity,多次创建多次生成,每次新创建A1实例唯一栈顶,按退出键由新到旧依次退出。
-
singleTop
可以创建多个Activity,但是不允许叠加,即当所配置的Activity已经唯一手机前台或者栈顶,则重新再创建此Activity则不再重新创建,而是调用onNewIntent方法。
例如:A,B两个Activity,A stardard B singleTop,A—B—B,则只有两个实例,即A和B,B不会再被创建,因为B已经唯一栈顶或者手机前台。再比如A—B—A—B,则启动顺序与其一致,因为属于交叉启动,不存在叠加。
-
singleTask
同一栈中只有一个实例,在同一启动此模式Activity,如果没有此实例,则会新建一个实例,如果已经存在,将不会新建,将会直接显示这个实例,并且会把这个实例以上的Activity全部desdroy掉,然后调用onNewIntent方法。
如果是另外应用开启这个activity,系统则会开启另外一个栈,已存储这个实例,如果这个实例可以点击关联其他Activity,则会和这个实例存储在同一栈中,但是配置为singleTask的Activity栈中只有一个实例。
例如:A—B—C—D B为singleTask 则一共存在四个实例,如果在D之后在开启B,因为B以上的实例会被destroy掉,所以就剩两个实例AB
-
singleInstance
只有一个实例,独立运行在一个task中,这个栈中不允许别的实例存在。
配置方法:
android:launchMode="standard"/>
网友评论