2

活动 A 是一个闪屏。Activity B 是一个菜单屏幕,即 singleTask。活动 C 是一个没有历史记录的屏幕,它从图库中选择一张照片,其中包含选择照片的内置意图。活动 D 是一个操作照片的屏幕。

我遇到的问题是,当我在 Activity D 中并选择主页按钮时,如果我再次选择要启动的应用程序,它会返回到 Activity A 以再次启动 Activity B,而不是在我离开的地方启动 Activity D。但是,如果我使用最近的应用程序,它会按预期切换回 Activity 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>
4

1 回答 1

2

显然是android:launchMode="singleTask"在活动 A 上导致了问题。曾经,闪屏中的 singleTask 被删除,行为按预期返回。不知道初始屏幕的 singleTask 来自哪里,但它可能是应用程序中存在一段时间的错误。

删除后,Activity D 在按下主页按钮并返回应用程序后不再启动启动屏幕和以下菜单。虽然我没有完全理解为什么这会在事件的生命周期中导致它,但这为我解决了这个问题。

于 2013-11-11T15:41:48.180 回答