Activity4种启动模式

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值