0

这里很奇怪。

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

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

另一个例子。如果我从活动 A 到活动 B 到活动 A 到活动 B 一切都很好。当我单击返回时,我转到 Activity A(如预期的那样)但是当我再次单击返回时,我转到 Activity 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>
4

1 回答 1

1

听起来像活动 B 被finish()调用或什么的。OnCreate我建议在, OnPause, ,中放入一些日志语句OnResumeOnDestroy这样您就可以监控 Activity B 的生命周期。它是一个高地活动(只能有 1 个),因此您不必担心会创建多个实例。此外,您可能会查看/覆盖onNewIntent并在那里放置一些日志记录调用。

finish()不是真正的答案,而是在开始活动 A 后或当活动 B 进入后台而你忘记它时,给你或某人打电话的甜甜圈美元。

如果不是这种情况,我会对活动 B 如何/何时死亡感兴趣。通常,如果它在返回时由于某些错误而停止,Android 会向你咆哮,但既然你没有提到我猜它不是。

于 2012-07-17T03:44:25.953 回答