如果用户离开一个任务很长一段时间,系统会清理该任务中除了根activity 之外的所有activity。当用户
再次回到这个任务的时候,除了只剩下初始化activity 尚存之外,其余都跟用户上次离开它的时候一样。
这样做的原因是:在一段时间之后,用户再次回到一个任务的时候,他们更期望放弃他们之前的所作所为,
做些新的事情。
被清空至只留下rootactivity。换句话说,这是alwaysRetainTaskState 的另一个极端。哪怕仅是过了
可以使任意activity 都被清理,甚至根activity 也不例外。当它设置为“true”的时候,此activity 仅做为
任务的一部分存在于当前回话中,一旦用户离开并再次回到这个任务,此activity 将不复存在。
17
响应。如果此时指定的activity 的加载模式为“standard”,则它本身也会从堆栈中移除,并加载一个新
的实例来处理到来的intent。这是因为加载模式为“standard”的activity 总会创建一个新实例来处理新
的intent。
FLAG_ACTIVITY_CLEAR_TOP 与FLAG_ACTIVITY_NEW_TASK 经常合并使用。这时,这些标记提供
了一种定位其它任务中现存的activity 并将它们置于可以对intent 做出响应的位置的方法。
再次回到这个任务的时候,除了只剩下初始化activity 尚存之外,其余都跟用户上次离开它的时候一样。
这样做的原因是:在一段时间之后,用户再次回到一个任务的时候,他们更期望放弃他们之前的所作所为,
做些新的事情。
这些属于默认行为,另外,也存在一些activity 的属性用以控制并改变这些行为:
alwaysRetainTaskState 属性
内保留它堆栈内的所有activity。
clearTaskOnLaunch 属性
被清空至只留下rootactivity。换句话说,这是alwaysRetainTaskState 的另一个极端。哪怕仅是过了
一小会儿,用户回到任务时,也是见到它的初始状态。
finishOnTaskLaunch 属性
可以使任意activity 都被清理,甚至根activity 也不例外。当它设置为“true”的时候,此activity 仅做为
任务的一部分存在于当前回话中,一旦用户离开并再次回到这个任务,此activity 将不复存在。
17
此外,还有别的方式从堆栈中移除一个activity。如果一个intent 对象包含FLAG_ACTIVITY_CLEAR_TOP 标记,
而且目标任务的堆栈中已经存在了一个能够响应此intent 的
activity 类型的实例。则这个实例之上的所有activity 都将被清理以使它位于堆栈的顶部来对intent 做出响应。如果此时指定的activity 的加载模式为“standard”,则它本身也会从堆栈中移除,并加载一个新
的实例来处理到来的intent。这是因为加载模式为“standard”的activity 总会创建一个新实例来处理新
的intent。
FLAG_ACTIVITY_CLEAR_TOP 与FLAG_ACTIVITY_NEW_TASK 经常合并使用。这时,这些标记提供
了一种定位其它任务中现存的activity 并将它们置于可以对intent 做出响应的位置的方法。