码迷,mamicode.com
首页 > 其他好文 > 详细

Activity启动模式

时间:2015-07-25 19:41:39      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

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

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

技术分享

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

 

2.singleTop

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

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

 

3.singleTask

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

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

技术分享

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

 

4.singleInstance

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

现在假定如下Activity

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

 

 

 

 进行操作:

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

技术分享

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

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

技术分享

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

技术分享

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

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

技术分享

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

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

Activity启动模式

标签:

原文地址:http://www.cnblogs.com/ruyingxiangsui/p/4676178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!