Android通过把所有的已启动的Activity依次放到同一个后进先出的堆栈里来进行管理,对于大多数应用程序来说这种方法能够很好的工作,并且你不必担心Activity是如何跟任务关联的或者他们是如何存在回退堆栈中的。但是,你可能决定要打破这种通常的行为。或许你想要应用程序中的一个Activity在启动的时候开启一个新的任务(而不是放在当前的任务中);或者当你启动一个Activity时,你想使用之前既存的实例(而不是在回退堆栈的顶部创建一个新的实例);或者你想在用户离开这个任务时清除回退堆栈中根Activity以外的所有Activity。
你能够使用<activity>清单元素中的属性和传递给startActivity()方法的Intent中的标识来做这些事情,甚至更多。
<activity>的主要属性包括:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Intent的主要标识包括:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
在以后的章节中,你会看到怎样使用这些清单属性和Intent标识来定义Activity是如何跟任务关联的以及在回退堆栈中的行为。
警告:大多数应用程序都不应该终端Activity和task的默认行为。如果你决定必须编辑Activity的默认行为,就要谨慎使用,并且确保启动期间和使用回退按钮从其他的Activity和任务中返回时这个Activity的可用性。同时确保导航的结果与用户的预期行为一致。
注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。
如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar