参考:http://developer.android.com/guide/components/tasks-and-back-stack.html#ManagingTasks
在前面一章中讲到了Android如何管理任务和返回堆栈——将所有的连续Activity安排在同一个Task中,即一个“后进,先出”的栈里。这样的方式对大多数应用程序有很好的效果,而且我们也不需要担心你的Activity如何和Task联系在一起,也不需要关系它们在“back stack”返回堆栈中是如何存在的。然而,在某些情况下,你也许会需要打破这种常规的行为。比如你需要你用用程序里面的某个Activity在一个新的Task中启动(而不是被安排在当前的Task中);或者,当你开启一个Activity的时候,你想如果它已经存在,那么就把它已经存在的实例拿到前台(而不是在返回堆栈的顶部再去创建一个新的实例);或者,你也许想当用户离开这个Task的时候,清除该返回堆栈中除了root Activity的其他所有Activity。
<activity>
中添加属性和在调用
startActivity()
时为intent添加flag,来完成上面的行为,或者做其他更多的特定的行为。
在Task管理的方面,<activity>
中可用的属性如下:
可用的Intent flag如下:
注意:大多数应用程序不需要破坏Activity Task的默认行为。如果你确定对于你的Activity,确实是需要修改这个默认行为的话,使用时一定要小心,一定要测试程序可用性活动,如在它的启动过程中和当通过后退按钮从其他的Activity和Task中返回的时候。一定要测试导航行为可能与用户的预期行为的冲突。
因为内容较多,分为几篇文章来描述:
1.6、Activity任务和返回堆栈3(Tasks and Back Stack)之LaunchMode