活动的启动方式一共有四种。分别是standard、singleTop、singleTask和singleInstance。首先Android是用返回栈来管理活动的,栈即先进后出。

standard

standard是默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。 从FirstActivity基础上启动从FirstActivity基础上启动,会在栈顶新建一个FirstActivity实例,而不在乎该活动是否已经在返回栈中存在,这时你要按两次返回才能退出程序。

singleTop

当Activity的活动模式设置为singleTop时,在启动活动时首先检查栈顶活动是否是该活动,如果是,在使用当前实例,否则继续创建新的实例。 修改AndroidManifest.xml修改该配置文件,设置MainActivity的启动模式为singleTop,如下:

<activity  
      android:name=".MainActivity"  
      android:label="@string/app_name"  
      android:launchMode="singleTop" >  
      <intent-filter>  
          <action android:name="android.intent.action.MAIN" />  
          
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>  
  </activity>  

singleTask

当设置活动的启动模式为singleTask时,首先检查返回栈中是否存在当前活动,如果存在当前活动的实例,则直接使用当前实例,并把当前活动之上的所有活动pop出栈,即当前活动位于栈顶位置。。如果没有发现就会创建一个新的活动实例。

singleinstance

当一个Activity的启动模式设置为singleInstance时,那么该活动成为了共享活动实例,可以与其他活动进行交互,可以其他应用程序进行调用,并且该活动是启用新的返回栈进行活动管理的。不管是哪个应用程序访问该活动,都使用同一个返回栈,从而使用的都是同一实例。