活动A是启动画面。 活动B是singleTask的菜单屏幕。 活动C是具有noHistory的屏幕,其选择具有选择照片的内置意图的画廊中的照片。 活动D是一个操纵照片的屏幕。
我遇到的问题是,当我在Activity D中并选择主页按钮时,如果我选择再次启动应用程序,它会将我返回到活动A以再次启动活动B而不是启动活动D离开了。但是,如果我使用最近的应用程序,它会按预期切换回活动D。所以,我必须设置一些稍微容易出错的东西。但是,我希望它能在两种情况下返回活动D,以便用户可以继续回到照片查看屏幕(活动D)。
思想?
<activity
android:name="ActivityA"
android:theme="@style/Theme.CustomDefaultStartup"
android:noHistory="true"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="sensorLandscape"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="ActivityB"
android:theme="@style/Theme.CustomDefault"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
<activity
android:name="ActivityC"
android:theme="@style/Theme.CustomDefault"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
</activity>
<activity
android:name="ActivityD"
android:theme="@style/Theme.CustomDefault"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
</activity>
答案 0 :(得分:2)
显然,活动A上的android:launchMode="singleTask"
导致了问题。一旦删除了启动屏幕中的singleTask,就会按预期返回行为。不确定启动屏幕的singleTask来自哪里,但它可能是应用程序中暂时留下的错误。
删除后,活动D按下主页按钮后不再启动启动画面和以下菜单并返回应用程序。虽然我没有完全理解为什么这会在事件的生命周期中引起它,但这解决了我的问题。