4种启动模式
- standard 标准模式,默认模式,正常activity task的进出栈。
- singleTop 栈顶复用,如果刚好是在activity task的栈顶,无需重新创建,直接调用onNewIntent()。
以上两种方式都是用于单个任务栈,或者单个APP应用进程。
singleTask 栈内复用,全局单例,如果activity task栈已经存在,就直接调用,并清除上面的所有activity,也是调用onNewIntent(),可以在同个任务栈或不同任务栈使用。
singleInstance 单一实例,重新创建一个任务栈,而且这个任务栈只能有一个activity,如果已经创建了,也是调用onNewIntent(),是不同任务栈的使用。
这两个在不同任务栈使用,activity跳转会发生task切换,入场动画会不一样。allowTaskReparenting属性不会有task切换,但是是Android9,10失效了。
taskAffinity :activity的任务栈分组,默认app包名,设置不同taskAffinity,会启动不同任务栈,会发生task切换,最近任务列表多个同名task,只能显示一个,singleInstance 如果有同名的task,taskAffinity 冲突,其他则会被隐藏。最近任务列表看到的task未必活着,看不到未必死了。