Activity的启动模式

Posted 白色单车

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的启动模式的主要内容,如果未能解决你的问题,请参考以下文章

Android:四种启动模式

android 怎么设置activity的启动模式

Activity启动模式

Activity的启动模式

activity启动模式

Activity的四种启动模式