android系统保持一个任务栈(也叫回退栈),用于记录打开过的activity
在这个栈里面有很多的Task,具体的activity是关联到Task的,默认情况下一个应用程序一个Task,打开的activity都关联到该task,但是这也不是绝对的,可以通过在manifest中设置activity属性进行修改
修改activity关联task:activity设置taskaffinity值,设置allowtaskreparenting为true(默认activity继承application的值为false),并且在打开该activity的时候设置intent的flag为flag_activity_new_task
前面提到activity是关联到task的,那么在打开activity的时候,会默认的先关联到task,然后把该task提前到栈的顶部来
常用的flag:
flag_activity_new_task:启动新的task
flag_activity_clear_top:销毁他所在的task中的前面的所有activity
flag_activity_single_top:如果打开的这个activity已经在栈顶,则不会调用onCreate方法,而是调用onNewIntent打开
在设置flags的时候注意setFlags和addFlags
setFlags是设置为这个flag,addFlags是在当前flag的基础上增加flag标志