Android Activity的四种加载模式

配置Android时可指定android:launchMode属性,该属性支持如下四个属性值:

(1)standard:标准模式(若不指定,则该模式为默认加载模式);

(2)singleTop:Task栈顶单例模式;

(3)singleTask:Task内单例模式;

(4)singleInstance:全局单例模式。

下面详细介绍一下这四种加载模式。

1.standard模式

(1)每次通过这种模式来启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到当前Task栈中;

(2)这种模式不会启动创建新的Task,新Activity将会被添加到原有的Task中;

(3)若Activity已经存在,也会创建一个相同的Activity(不同Activity实例的hashCode值由于差异)加入栈顶。

2.singleTop模式

(1)当要启动的目标Activity已经位于Task栈顶时,系统不会创建目标Activity的实例,而是直接复用已有的Activity实例;

(2)当要启动的目标Activity没有位于Task栈顶时,系统会重新创建目标Activity的实例(哪怕已经存在),并将它加载到Task栈顶,此时与standard模式完全相同。

3.singleTa模式

(1)如果要启动的目标Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶;

(2)当要启动的目标Activity已经位于Task栈顶时,系统会复用已存在的Activity实例(与singTop相同);

(3)当要启动的目标Activity已经存在,但是没有位于Task栈顶时,系统会把位于该Activity上面所有的Activity移出Task栈,从而使得目标Activity转入栈顶。

4.singleInstan模式

(1)如果要启动的目标Activity不存在,系统会先创建一个全新的Task栈,再创建目标Activity的实例,并将它加入新的Task栈顶;

(2)当要启动的目标Activity已经存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来;

(3)采用该模式加载的Activity总是位于Task栈顶且所在Task将只包含该Activity(因为自己单独用一个Task栈)。

你可能感兴趣的:(Android)