standard模式
standad模式是Activity默认的启动方式,在不进行显示指定的情况下,所有Activity都会以这种方式启动。
Intent intent = new Intent(this,FirstActivity.class);
startActivity(intent);
以这种模式启动的Activity 每次都会创建一个新的实例
![standard模式](https://img-blog.csdn.net/20160611082538854)
SingleTop模式
以这种模式启动的Activity已经在栈顶的话,就不会在创建新的实例。
修改配置文件的启动方式AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:launchMode = "SingleTop"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NomalActivity"></activity>
<activity android:name=".DialogActivty" android:theme="@android:style/Theme.Dialog"></activity>
</application>
![SingleTop模式](https://img-blog.csdn.net/20160611083548961)
但是如果当前的Activity如果未能处在栈顶的话,当启动当前Activity的时候还是会创建新的实例
SingleTask
以这种模式启动的Activity可以解决多个实例的问题,在整个程序中只会存在一个实例,系统会先检查返回栈中是否存在该实例,如果有就直接使用,会将其他Acitivty都清楚栈。没有就创建
修改配置文件的启动方式AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:launchMode = "SingleTask"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NomalActivity"></activity>
<activity android:name=".DialogActivty" android:theme="@android:style/Theme.Dialog"></activity>
</application>
![SingleTask模式](https://img-blog.csdn.net/20160611084827574)
SinglelnStance模式
这种模式启动的Activity会创建一个新的返回栈来管理这个活动,这样做的意义是,如果当前活动被其他程序调用访问。我们想让其他的程序共享当前活动的实例的话,使用前面3种肯定是办不到的,因为每个程序都有自己的返回栈,同一个Activity在不同的返回栈入栈肯定是创建了不同的实例。使用SinglelnStance会创建一个单独的返回栈,不管那个程序访问,都会共用同一个返回栈,也就解决了共享实例的问题。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:launchMode = "SinglelnStance"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NomalActivity"></activity>
<activity android:name=".DialogActivty" android:theme="@android:style/Theme.Dialog"></activity>
</application>
![FirstActivity](https://img-blog.csdn.net/20160611090451665)
![SecondActivity](https://img-blog.csdn.net/20160611090516676)
![ThirdActivity](https://img-blog.csdn.net/20160611090540618)
![实例对象](https://img-blog.csdn.net/20160611090555662)