调用finish()会从活动堆栈中删除活动吗?

时间:2014-07-31 10:49:39

标签: android android-activity activity-finish

我已经申请了

  1. 开始活动' Pin'我开始activity A后(活动A有noHistory= true,所以它不会留在堆栈上)。
  2. 如果没有设置引脚; PinActivity也会启动活动NewPinActivity
  3. 设置图钉后,NewPinActivity拨打finish()并返回PinActivity。您将在哪里提供适当的引脚,它会在其上调用finish(),它会再次移至activity A(因为activity AnoHistory=true,所以我必须启动一个新实例activity A)。 我的问题是,如果我从backactivity A,即使我在其上调用NewPinActivity,我的finish()有时会再次显示。

2 个答案:

答案 0 :(得分:1)

不,您应该在第二项活动中使用:

        Intent exitIntent = new Intent(this,MainActivity.class);
        exitIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(exitIntent);
        MainActivity.exitHandler.sendEmptyMessage(0);

并在MainActivity中:

    exitHandler = new Handler() {
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what) {
        case 0:
            // clear any informations you like here
            MainActivity.this.finish();
            break;
        }
    }
};

答案 1 :(得分:0)

听起来你应该使用NewPinActivity开始startActivityForResult。成功的结果PinActivity应该ActivityAIntent.FLAG_NEW_INTENT本身启动finish();?奇怪的是你为什么要开始ActivityA noHistory?