Android Switched Startup Activity:旧的启动活动仍然如此

时间:2012-07-17 03:23:07

标签: android navigation android-activity back-button

这里很奇怪。

我最初的活动是启动活动(活动A)。它有与之关联的标记android:launchMode="singleTask"。没问题。我的要求发生了变化,现在我将Activity B作为创业活动。我复制了intent过滤器,我将名称更改为“.ActivityB”,并且我也将启动模式标记移动了。

似乎工作正常;当我启动应用程序时,我转到活动B.然而,当我从活动B转到活动A然后单击后退按钮时,应用程序退出并且不会重新打开(如果我没有启动模式标记,它将重新打开。 )

另一个例子。如果我从活动A到活动B到活动A到活动B一切都很好。当我点击返回时我转到活动A(正如预期的那样)但是当我再次点击回来时,我转到活动A的前一个实例(呃哦)然后我再次点击返回并退出应用程序。两次都跳过活动B.

我显然忽略了一些东西,但我无法弄清楚是什么。在切换启动活动之前,我没有覆盖任何后退按钮功能,一切正常。

修改的 以下是在任何更改之前从我的清单中摘录

<activity android:name=".ActivityA" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" 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"></activity>

以下是更改后的摘录

<activity android:name=".ActivityB" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" 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="ActivityA"></activity>

1 个答案:

答案 0 :(得分:1)

听起来活动B正在调用finish()或其他东西。我建议在OnCreateOnPauseOnResumeOnDestroy中添加一些日志语句,这样您就可以监控活动B的生命。它是一个高地活动(只能进行1)所以你不必担心创建多个实例。您也可以查看/覆盖onNewIntent并在那里放置一些日志记录调用。

不是真正的答案,但是在开始活动A之后,或者当活动B在后台进行并且你已经忘记它时,你或者有人给你或者某人投入了美元。

如果情况并非如此,我会对活动B何时/何时死亡感兴趣。通常如果它因为返回时出现一些错误而停止,那么Android会咆哮你,但是因为你没有提到我猜它不是。