Android切换的启动活动:旧的启动活动仍然如此



这里很奇怪。

我最初有一个活动是启动活动(活动A)。它关联了标记android:launchMode="singleTask"。没有问题。我的需求发生了变化,现在我将活动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>

听起来像是活动B被调用了finish()之类的。我建议在OnCreateOnPauseOnResumeOnDestroy中放入一些日志语句,这样您就可以监控活动B的寿命。这是一个高地活动(只能有1个),因此您不必担心创建多个实例。此外,您还可以查看/覆盖onNewIntent,并在那里进行一些日志记录调用。

这并不是一个真正的答案,但当你或某人在开始活动a后打了finish()电话,或者当活动B在后台进行时,你已经忘记了这件事,你会得到美元。

如果不是这样的话,我会对活动B如何/何时结束感兴趣。通常,如果它在返回时因为一些错误而停止,Android会对你咆哮,但由于你没有提到这一点,我想它不是。

相关内容

  • 没有找到相关文章

最新更新