在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
<activity>标签中android:launchMode=""是用来修改启动模式的。
<?xml version="1.0" encoding="UTF-8"?>
-<manifest android:versionName="1.0" android:versionCode="1" package="com.l000phone.androidxx.day07_activity_task_backstack_demo" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:targetSdkVersion="23" android:minSdkVersion="15"/>
-<application android:theme="@style/AppTheme" android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:allowBackup="true">
-<activity android:label="@string/app_name" android:name=".MainActivity">
-<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:label="@string/title_activity_activity_b" android:name=".ActivityB"> </activity>
<activity android:label="@string/title_activity_activity_c" android:name=".ActivityC" android:launchMode="singleInstance"> </activity>
<activity android:label="@string/title_activity_activity_d" android:name=".ActivityD"> </activity>
</application>
</manifest>
Android总Activity的启动模式分为四种:
一.standard(默认的启动模式)
不论什么时候,启动一个activity都会重新创建一个activity,并且重新创建的activity同样被放入同一个back stack(Task是一组被相继打开的activity的集合。Back stack是用于存放Task中所有的Activity集合的一个容器)中。
二.SingleTask(ActivityC的启动模式为singleTop)
1、当设置为singletop的activity处于栈顶时,完成自启动(自己跳转自己),不会重新创建一个新的activity。
2、如果设置为singleTop的activity不在栈顶,则启动此activity的时候同样会创建一个新的activity。
3、如果要接受intent传递的数据,需要重写onNewIntent方法。
三.SingleTask(ActivityB的启动模式为SingleTask)
1、singletask启动模式的activity被启动的时候,不会创建一个新的activity实例。
2、启动处于singleTask模式的activity之上的所有activity会全部销毁(弹出栈)。
3、如果要接收intent中的数据,需要重写onNewIntent方法。
四.
SingleInstance(ActivityC的启动模式是SingleInstance)
1、如果设置了singleInstance的activity被启动后,会处于另一个栈中(独居),当前activity独占一个栈。
2、出栈:先将处于前台栈中的所有activity全部销毁,才会开始销毁接下来的这个栈中的activity。