Activity的启动模式
前情提要:
Activity被创建的实例是放在任务栈中的,任务栈的图形模式如下:
Activity的四种启动模式:
1.standard(标准模式):每次启动Activity都会重新创建一个新实例。
2.singleTask(栈内复用模式):如果栈内已经存在Activity A,那么再启动Activity A的话不会重新创建实例,而是把这个Activity置顶,并调用onNewIntent方法。
3.singleTop(栈顶复用模式):如果想要启动Activity A,且Activity A位于栈顶,那么就不会重新创建Activity A,而是调用onNewIntent方法,如果Activity A不在栈顶则会重新创建。
4.singleTask(单实例模式):比如启动Activity A,会单独创建一个任务栈把Activity A放进去。
P.S.默认情况下,所有Activity所需的任务栈的名字都是应用的包名,特殊情况可以使用TaskAffinity属性指定任务栈的名字。
1.当TaskAffinity与singleTask结合的时候,活动是运行在名字与TaskAffinity相同的栈中。
2.当TaskAffinity与allowTaskReparenting结合的时候,如果应用A启动了应用B的Activity C,然后按Home键返回桌面,如果allowTaskReparenting为true,那么打开应用B的话,Activity C的实例会从应用A的栈移到应用B的栈。