Activity四种启动模式
- 1.standard(默认模式)
- 2.singleTop
- 3.singleTask
- 4.singleInstance
进入程序会创建一个默认的Activity实例(MainActivity)跟用户交互,与此同时还会创建一个跟应用程序包名名字一样的任务栈,把默认的创建的Activity实例压入栈中。
在清单文件中配置
<activity
android:name=".main.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
1.standard系统默认的启动模式
standard模式启动ActivityB,创建类ActivityB的实例压入栈中。
启动Activity方式
// 显示启动
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
//隐式启动
Intent intent = new Intent();
intent.setAction("action");
startActivity(intent);
2.singleTop启动模式
singleTop模式启动ActivityB,系统会检查栈的栈顶是否存在类ActivityB的实例,存在直接使用该对象并回调onNewIntent(Intent intent)方法。不存在类ActivityB的实例,则创建类ActivityB的对象压入栈顶。
3.singleTask启动模式
singleTask模式启动ActivityB, 栈中已经存在类ActivityB的实例,则系统会把栈中类ActivityB的实例之上所有Activity实例销毁,然后回调类ActivityB的实例onNewIntent(Intent intent)方法。栈中不存在类ActivityB的实例,则创建类ActivityB的实例压入栈顶。
4.singleInstance启动模式
singleInstance模式启动ActivityB,系统会为它创建新的任务栈,然后创建类ActivityB的实例并压如栈中,该栈只存一个实例对象。如下图说明在类ActivityB的实例中singleInstance模式启动ActivityC。