launchMode(启动模式)
standard(标准模式)
默认启动模式,每次将创建一个新的实例。
singleTop(栈顶复用)
如果该活动处于栈顶部,则不会新建实例,否则新建实例;
复用时会触发 onNewIntent 方法。
singleTask(栈内复用)
栈内唯一,只要栈中存在该实例,将被复用;并且位于该复用活动顶部的活动将被推出栈;
复用时会触发 onNewIntent 方法。
singleInstance(单例模式)
全局唯一,单独占用一个栈(哪怕taskAffinity一样),只要存在该实例,无论从哪里启动都将被复用;
注意:假设有多个活动,ABCD,按顺序启动,单例活动处于中间,回退时,单例模式会在最后一个,因为它属于独立栈;
复用时会触发 onNewIntent 方法。
taskAffinity(任务亲和力)
标识当前活动所属任务;
默认所有活动属于一个相同的 taskAffinity(应用程序的包名);
启动两个App,分别把其中的活动设置为相同的 taskAffinity,两个app会分别启动两个不同的 task,但是相同 taskAffinity 的活动会处于相同 task 中,达到跨应用进程的作用。
allowTaskReparenting(活动迁移)
概括:能够从启动它的任务中转移到另一个与启动它的任务有亲缘关系的任务中。
两个app,打开第一个app,然后启动第二个app的TestActivity(allowTaskReparenting=true);
此时在打开第二个app,TestActivity将被迁移回自己的task,直接显示TestActivity。