【发布时间】:2017-01-20 09:33:35
【问题描述】:
我的应用程序包含多个活动,主要活动(A)处于launchMode singleTop,每个over 活动都处于singleInstance 模式。
我选择了 singleInstance 来防止无限导航 如果我这样导航:A -> B -> C -> B -> C -> B -> C 后退动作会做:C -> B -> A
它按预期工作。
问题:如果我导航 A -> B 然后我打开应用程序最近屏幕,单击我的应用程序,显示活动 b(确定)但是如果我返回应用程序退出并返回到 android 主页(活动没有被破坏, 我总是可以打开 B 因为最近的应用程序屏幕)
如果我从最近的应用程序菜单打开应用程序,为什么任务历史记录不保留?
<activity
android:name="A"
android:label="@string/app_name"
android:launchMode="singleTop"
android:configChanges="orientation|screenSize"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchResultsActivity" />
</activity>
<activity
android:configChanges="orientation|screenSize"
android:name="B"
android:label="B"
android:launchMode="singleInstance"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity
android:configChanges="orientation|screenSize"
android:name="C"
android:label="C"
android:launchMode="singleInstance"
android:theme="@style/AppTheme.NoActionBar">
</activity>
感谢您的帮助
【问题讨论】:
-
这不可能“按预期工作”。如果不设置
taskAffinity,设置launchMode="singleInstance"是没有用的。请发布您如何从 A->B->C->B->C 过渡。如果您只是为每个转换调用startActivity(),那么您的任务中肯定会有多个 B 和 C 实例。
标签: android android-activity single-instance launchmode android-recents