我对Android中不同的活动启动模式感到非常困惑。我知道这与活动堆栈有关,但我对此也不是很清楚。希望能简要说明每种启动模式及其简单用例。
我对Android中不同的活动启动模式感到非常困惑。我知道这与活动堆栈有关,但我对此也不是很清楚。希望能简要说明每种启动模式及其简单用例。
SingleTask and SingleInstance activities can only begin a task. They are always at the
root of the activity stack. Moreover, the device can hold only one instance of the
activity at a time — only one such task.
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Standard">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SingleTop"
android:launchMode="singleTop" />
<activity
android:name=".SingleTask"
android:launchMode="singleTask"
android:taskAffinity="" />
<activity
android:name=".SingleInstance"
android:launchMode="singleInstance" /> <!--//TODO launchMode -->
</application>
<uses-permission android:name="android.permission.GET_TASKS" />
Android 4种启动模式:
1.标准
2.单一顶部
3.单一任务
4.单一实例
标准 -> 当从Activity A到B时,每次都会创建新对象,并且按返回键多次返回。
单一顶部 -> 当用户从Activity A到B并再次进入Activity B时,不会创建新的实例或调用onCreate方法。但是会调用 onNewIntent 方法。
单一任务 -> 当用户从Activity A到B再到Activity C并再次进入Activity B时,不会创建新的实例或调用onCreate方法。但是会调用 onNewIntent 方法。并且当在Activity B上按下返回键时,会回到Activity A。 Activity C将从中间移除。
单一实例 -> Activity Stack B 是 A 到 B 到 C。在启动B活动后,A->B->C->D — Job #1 另外一个B —— Job #2(这里,B将被分配到单独的任务中)