Android Activity 启动模式详解
Android 使用 Activity Stack 管理 Activity,一个 Task 对应一个 Activity 栈。
Launch Mode 概述
Android 中 Activity 共有 4 种 Launch Mode:standard、singleTop、singleTask、singleInstance。
standard
standard 是默认启动方式。理论上一个 Activity 可以有无限个实例。
// 在 Manifest 中配置两个 Activity,默认配置为 standard
<activity android:name=".FirstActivity" />
<activity android:name=".SecondActivity" />
// 在 FirstActivity 中启动 SecondActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
当 SecondActivity 被启动后,其对应的实例会被压入相同的 Task 中,并置于栈顶。如果按下返回键,SecondActivity 会出栈,从栈顶移除,onDestroy 方法会被调用。
// 在 FirstActivity 中调用 FirstActivity
Intent intent = new Intent(FirstActivity.this, FirstActivity.class);
startActivity(intent);
上面这样做没有问题,会创建一个新的实例,并且把新的实例压入栈顶。
跨应用启动 standard
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="com.example.demo.LAUNCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

