Activity启动模式

1.standard:系统默认的启动方式。

在这种模式下,新启动的Activity总是置于栈顶,如下图所示。

Activity启动模式

如果按返回键,则xxxActivity从上往下依次弹出。

 

2.singleTop

启动新的xxxActivity时,先检测栈顶是否是xxxActivity的实例,如果是则不新建继续使用,否则在栈顶新建一个xxxActivity的实例。

注意:如果栈顶是xxxActivity的实例,那么xxxActivity的onNewIntent(Intent intent)方法会被触发。

 

3.singleTask

启动新的xxxActivity时,从栈顶向栈底扫描。如果发现有xxxActivity得实例,则将该xxxActivity上方的所有Activity统统弹出栈;否则在栈顶新建xxxActivity的实例。

例子:假设Activity2的启动模式为singleTask,在左图中再次启动Activity2的时候,发现栈中有Activity2的实例,所以会把该实例上方的Activity3弹出去,结果如右图所示。

Activity启动模式

注意:左图中Activity2的onNewIntent(Intent intent)方法会被触发。

 

4.singleInstance

这个是最复杂的一个,选用该模式的Activity会单独占用一个栈。

现在假定如下Activity

Activity 启动模式 主要功能
Activity1 standard 启动Activity2
Activity2 singleInstance 启动Activity3
Activity3 standard 启动Activity2

 

 

 

 进行操作:

(1)先启动Activity1,然后在Activity1中启动Activity2,此时栈结构如下图所示:

Activity启动模式

没错,此时Activity1和Activity2在不同的栈里面!

(2)接着在Activity2中启动Activity3,栈结构将变为以下状态:

Activity启动模式

(3)此时手机展示的界面为Activity3,现在在Activity3中启动Activity2,栈结构如下:

Activity启动模式

栈结构没有改变!但Activity2中的onNewIntent(Intent intent)方法被触发了。

(4)此时展示的界面为Activity2,再次启动Activity3,栈结构将调整如下:

Activity启动模式

(5)此时展示的界面为Activity3,然后进行以下操作:

操作 展示界面
按1下返回键 Activity3
再按1下返回键 Activity1
再按1下返回键 Activity2
再按1下返回键 主屏幕

你可能感兴趣的:(Activity)