什么时候应该调用finish()?

时间:2012-07-25 18:53:45

标签: android android-activity

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

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

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

P.S。变量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);

1 个答案:

答案 0 :(得分:2)

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

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

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

相关问题