四大组件之一---------activity的知识 activity的生命活动 activity的四种启动模式

四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式

activity的四种启动模式

Android中以一个任务栈用来管理activity

一个栈的形式进行管理

在清单文件中,通过<activity>标签的android:launchMode属性设置启动模式

 1 <activity
 2             android:name="com.example.MainActivity"
 3             android:label="@string/app_name" 
 4             android:launchMode="standard">   //模式的设置
 5             <intent-filter>
 6                 <action android:name="android.intent.action.MAIN" />
 7 
 8                 <category     android:name="android.intent.category.LAUNCHER" />
 9             </intent-filter>
10 </activity>
11     

sandard模式(默认的工作模式)

在这种模式下,每启动一个activity都会在任务栈中启动一个新的activity进栈,即便是打开相同的页面,系统也不会判断该activity是否存在,而是直接启动一个新的activity加入任务栈中。

四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式

在进行出栈的时候,需要先出第二个activity2,再出栈第一个activity2

singleTop模式

当需要启动的activity已经位于栈顶的时候,则不会创建活动。

 四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式

singleTask模式

该activity只能在整个应用存在一个实例

四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式

singleinstance模式

该activity在整个系统中,只能存在一个实例

采用这种模式会出现三种状况

第一种:如果启动的activity不存在,

  系统会先创建一个新的任务栈,再创建这个activity的实例,并将这个activity加入新的任务栈中

第二种:如果要启动的activity已经存在了,

  无论是哪个应用程序,或者是任务栈,启动这个activity,系统都会将activity所在的任务栈转到前台。

第三种:当activity2已经存在于系统前台时,我们再启动activity1

       系统不会执行activity1的模式,只是会将activity1跳转到前台

四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式四大组件之一---------activity的知识
activity的生命活动
activity的四种启动模式