我对Android中不同的活动启动模式感到非常困惑。我知道这与活动堆栈有关,但我也不太清楚。我希望能用一个简单的用例对每个launchMode进行简短的解释。
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.单实例
标准->当转到活动A到活动B时,每次都会创建新对象,当返回时按多次返回。
单顶->当用户转到活动A转到活动B并再次转到活动B时则不创建新实例,也不调用onCreate方法。但是在NewIntent方法
调用上。单个任务->当用户从活动A到活动B,从活动B到活动C再次转到活动B时,不创建新实例,也不调用onCreate方法。但是在NewIntent方法调用上。当对活动B进行反向按压时,转到活动A。从中间移除活动C。
单个实例->活动堆栈B是A到B到C。在启动B活动之后,A->B->C->D——作业#1B——作业#2(此处,B将被分配到一个单独的任务)
如果继续这样并添加E和B,堆栈将如下所示:作业#1--A->C->D->E5.清单项目