standard
activity默认每一个任务栈都是一个Task,当我们Task调用其他Task的activity时候,我们的Task会增加一个其他Task的activity,但是其他Task的任务栈不会被打开,回到桌面我们在次点击其他Task,并不会显示已经打开的activity,这种是android 默认规程,在不同Task中打开同一个activity,activity会被创建多个实例,分别放到每一个task中.互不干扰.
singleTask
当我们使用singleTask时,Task叠加,我们Task调用其他Task的activity时候,会打开其他Task叠加到我们Task中,并显示已调用的activity.我们点击返回会将其他Task的activity全部销毁才会返回到我们Task,前台叠加的Task进入后台会全部拆开,最近任务键(方块)和home键前台进入后台,点击最近任务键,会发现有两个Task,继续点击其他Task,点击返回,这时候并不会返回到我们Task,而是回到应用桌面,
singleTask,规则,其他activity已经创建,会复用其他activity,不会调用onCreate,会调用onNewIntent,并销毁其他activity上层全部activity
allowTaskReparenting
activity默认归属一个Task,不会在多个Task跳来跳去,可以通过设置改变这个逻辑,allowTaskReparenting="true" 设置 allowTaskReparenting 我们的Task打开也会其他Task的activity时候,返回到桌面,再次点击我们的Task,会把其他Task的activity移到我们的Task中.
singleInstance
没一个activity都是一个单独的Task
taskAffinity
相同的taskAffinity都会放到同一个Task任务栈中
singleTop
如果栈顶activity是要启动的activity,这时候直接复用,如果不是采用standard方式创建一个新的activity
默认standard和singleTop多用于app内部
singleInstance对用于开放给外部app来共享使用
singleTask 内部交互和外部交互都会用的上,