由于某些要求,我的启动器活动的launchMode属性设置为singleTask。
<activity
android:name=".map.MapsActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/MapScreenTheme"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我面临的问题是,如果我打开另一个活动->按主页->单击启动器应用程序中的应用程序图标->它会打开MapActivity,而不是以前打开的活动。
但是,如果我通过“最近”菜单导航到该应用程序,则不会发生。然后,新打开的活动将保持在顶部。
[有人可以解释一下有关Backstack的情况吗,为什么ActivityManagerService没有考虑到应用程序进程已经存在,而是决定启动启动器应用程序并清除Backstack而不是简单地将应用程序前进?
尝试
android:launchMode="singleTop"
也请检出https://developer.android.com/guide/components/activities/tasks-and-back-stack
对于某些情况,您的主活动将由own应用程序中的其他活动启动[[only:您可以从清单的主要活动定义中删除launchMode
属性。只需将Intent.FLAG_ACTIVITY_NEW_TASK
传递给每个打开MainActivity
的意图,例如这样:
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
请注意,应用程序中own
Intent.FLAG_ACTIVITY_NEW_TASK
或launchMode="singleTask"
的行为仅与清单中活动定义上的taskAffinity
属性一起使用。我希望它将对您有所帮助。