0

我有一个通过意图调用第二个活动的活动。调用第二个活动后,我想完成第一个活动。因此,我在方法中有以下代码onStop()

@Override
public void onStop() {
    super.onStop();
    if (shouldBeClosed) {
        finish();
    }
}

问题是我的第一个活动没有关闭。我不明白为什么?
也许我应该把这段代码放进去onPause()
但正如我在这种情况下所理解的那样,当活动失去焦点时(比如在调用对话框之后),我的活动可以关闭。
那么为什么会发生这种情况以及我如何纠正这种行为的问题呢?

PS 变量shouldBeClosed为真。这不是重点。

编辑

这是第二个活动的调用:

Intent intent = new Intent(this, AcSpContextAssign.class);
Bundle extras = new Bundle();
extras.putInt(Constants.KEY_FROM_ACTIVITY, Constants.FROM_AcSpNameCreate);
extras.putLong(Constants.KEY_SPID, spId);
intent.putExtras(extras);
startActivity(intent);
4

1 回答 1

2

通常,您应该在发送意图后立即为您的第一个活动调用 finish()。就像是:

...
startActivity(secondActivityIntent);
finish();

这将为您的第一个活动触发 onPause()->onStop()->onDestroy() 链,因此您可以在那里执行正常清理

于 2012-07-25T19:00:52.820 回答