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栈顶;
【Android Activity的四种加载模式】(2)当要启动的目标Activity已经存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来;
(3)采用该模式加载的Activity总是位于Task栈顶且所在Task将只包含该Activity(因为自己单独用一个Task栈)。

    推荐阅读