Activity的堆栈(退出app后,如果launchMode="singleInstance",系统清空堆栈)
Activities' stack (after exit the app, the system clears stack if launchMode="singleInstance")
我不明白为什么会这样:我需要在单个实例中创建每个 Activity,所以我将 android:launchMode="singleInstance"
放在清单中。但是当我在设备上按下 'Home' 并再次打开它时,系统会清除堆栈并打开根 Activity,而不是最后一个打开的。如何为用户保留最后打开的 Activity,但在清单中保留 singleInstance
?
编辑:
清单
...
<application
...>
<activity
android:name=".ui.login.LoginActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.MainActivity"
android:label="${app_title_constant}"
android:launchMode="singleInstance"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<data android:scheme="${scheme}"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity
android:name=".ui.more.service.ScannerActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"/>
<activity
android:name=".ui.activity.CardsListForSendActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.CountriesActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.StepperCardPurchaseActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<service
android:name=".service.CacheContactsIntentService"
android:exported="false"/>
<service
android:name=".managers.push.PushNotificationExtenderService"
android:exported="false">
<intent-filter>
<action android:name="com.onesignal.NotificationExtender"/>
</intent-filter>
</service>
<receiver
android:name=".managers.push.PushBroadcastReceiver"
android:enabled="true">
</receiver>
</application>
</manifest>
不要使用launchMode="singleInstance"
。这不是必需的,而且实际上对您不起作用。通常,指定 "singleInstance" 将导致每个 Activity
都启动到其自己的单独任务中。但是,这不会发生在您的情况下,因为您没有在清单中指定 "taskAffinity" 。由于默认情况下所有 Activity 都具有相同的任务关联性,因此它们最终都将在同一个任务中结束(即使您指定了 "singleInstance" 启动模式)。
删除所有 launchMode
说明符并重试。
Android 的标准行为是 return 当应用程序从前台转到后台(按 HOME按钮并 return 转到应用程序)。
我不明白为什么会这样:我需要在单个实例中创建每个 Activity,所以我将 android:launchMode="singleInstance"
放在清单中。但是当我在设备上按下 'Home' 并再次打开它时,系统会清除堆栈并打开根 Activity,而不是最后一个打开的。如何为用户保留最后打开的 Activity,但在清单中保留 singleInstance
?
编辑: 清单
...
<application
...>
<activity
android:name=".ui.login.LoginActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.MainActivity"
android:label="${app_title_constant}"
android:launchMode="singleInstance"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<data android:scheme="${scheme}"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity
android:name=".ui.more.service.ScannerActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"/>
<activity
android:name=".ui.activity.CardsListForSendActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.CountriesActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.activity.StepperCardPurchaseActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<service
android:name=".service.CacheContactsIntentService"
android:exported="false"/>
<service
android:name=".managers.push.PushNotificationExtenderService"
android:exported="false">
<intent-filter>
<action android:name="com.onesignal.NotificationExtender"/>
</intent-filter>
</service>
<receiver
android:name=".managers.push.PushBroadcastReceiver"
android:enabled="true">
</receiver>
</application>
</manifest>
不要使用launchMode="singleInstance"
。这不是必需的,而且实际上对您不起作用。通常,指定 "singleInstance" 将导致每个 Activity
都启动到其自己的单独任务中。但是,这不会发生在您的情况下,因为您没有在清单中指定 "taskAffinity" 。由于默认情况下所有 Activity 都具有相同的任务关联性,因此它们最终都将在同一个任务中结束(即使您指定了 "singleInstance" 启动模式)。
删除所有 launchMode
说明符并重试。
Android 的标准行为是 return 当应用程序从前台转到后台(按 HOME按钮并 return 转到应用程序)。