Android 的4种启动模式

一、启动模式介绍

启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;

启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;

讲解启动模式之前,有必要先讲解一下“任务栈”的概念;

任务栈

每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1-->Activity2-->Activity3,则任务栈为:


Android 的4种启动模式_第1张图片


启动模式

(1)standard:标准模式,这也是系统默认的模式 每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;


Android 的4种启动模式_第2张图片

(2)singleTop:栈顶复用模式,在这种模式下,如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例系统也会调用该activity的onNewIntent,如果新activity已经存在但不存在栈顶 那么新的activity仍然会重新创建;


Android 的4种启动模式_第3张图片

(3)singleTask:栈内复用模式,这是一种单实列模式,只要activity在一个栈中纯在,那么多次启动此activity都不会创建实列,系统也会调用该activity的onNewIntent,具体一点,当一个具有singleTask模式的activity请求启动后 比如activity A  系统首先会寻找是否纯在A想要的任务栈,如果不存在,就重新创建一个任务栈,然后创建A的实列放入栈中,如果存在那么系统就会把A调到栈顶并调用他的onNewIntent方法;


Android 的4种启动模式_第4张图片

(4)singleInstance:单实列模式,这是一种加强的singleTask模式,他除了具有singleTask的所有特性外,还加强一点,那就是此种模式下的acivity只能单独位于一个任务栈中 ,如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例,改实列在Android 系统中只存在一个 是唯一的;

Android 的4种启动模式_第5张图片

你可能感兴趣的:(Android 的4种启动模式)