首页 > 代码库 > Activity的启动模式

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的栈。

 

Activity的启动模式