在BackStack中完成活动 - Android

Sni*_*per 5 android android-activity

在我的应用程序中,我有活动A,B,C,D和E.第一个活动是A然后打开B然后是C和D.现在我的后台是ABCD.现在当我从DI移动到E想要完成后台堆栈中的所有活动时,现在E应该是堆栈中的第一个活动.

就我而言

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
Run Code Online (Sandbox Code Playgroud)

要么

android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)

没有用,因为我没有重新开放已经开业的活动.打开新活动时,我必须关闭后台堆栈中的所有活动.

请帮我这样做.

Sat*_*jee 0

编辑后的最终答案

活动A 重要

    import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class ActivityA extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (getIntent().getBooleanExtra("EXIT", false)) {
            startActivity(new Intent(ActivityA.this,ActivityE.class));
            finish();
        }  

        setContentView(R.layout.alayout);

        Button play;

        play = (Button) findViewById(R.id.aId);     

        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            startActivity(new Intent(ActivityA.this,ActivityB.class));

        }

        });


    }

}
Run Code Online (Sandbox Code Playgroud)

活动B

    import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class ActivityB extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
        }  

        setContentView(R.layout.blayout);

        Button play;

        play = (Button) findViewById(R.id.bId);     

        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            startActivity(new Intent(ActivityB.this,ActivityC.class));

        }

        });


    }

}
Run Code Online (Sandbox Code Playgroud)

活动C

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class ActivityC extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
        }  

        setContentView(R.layout.clayout);

        Button play;

        play = (Button) findViewById(R.id.cId);     

        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            startActivity(new Intent(ActivityC.this,ActivityD.class));

        }

        });


    }

}
Run Code Online (Sandbox Code Playgroud)

活动D 重要

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class ActivityD extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
        }  

        setContentView(R.layout.dlayout);

        Button play;

        play = (Button) findViewById(R.id.dId);     

        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Intent intent = new Intent(getApplicationContext(),ActivityA.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
              intent.putExtra("EXIT", true);
               startActivity(intent);

               finish();

        }

        });


    }

}
Run Code Online (Sandbox Code Playgroud)

活动E

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class ActivityE extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
        }  

        setContentView(R.layout.elayout);

        Button play;

        play = (Button) findViewById(R.id.eId);     

        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            //startActivity(new Intent(ActivityE.this,ActivityE.class));

        }

        });


    }

}
Run Code Online (Sandbox Code Playgroud)

只要这样做