如何从android中删除后台堆栈中的活动?

时间:2016-08-18 06:07:05

标签: android

我有4个活动让我们假设活动" A"," B"," C"和" D"当我从C> D> A移动时,当我按下Activity" A"中的设备后退按钮,然后" C"我变得可见,而不是从应用程序中存在。我怎么能实现这一点。

5 个答案:

答案 0 :(得分:2)

您可以在拨打下一个活动时销毁您的活动。因此,在Intent之后,您可以调用finish()方法来销毁该活动。

检查一下

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

当你使用它时,它不会转到之前的活动,而是完成活动。


您还可以使用NO_HISTORY标志

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

答案 1 :(得分:0)

像这样覆盖你的背景,从那里你想回到主屏幕

@Override
    public void onBackPressed() {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(true);
        builder.setTitle("Exit");
        builder.setMessage("Do you want to exit?");
        builder.setInverseBackgroundForced(true);
        builder.setNegativeButton("Yes",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    /*finish();
                    System.exit(0);*/
                    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            });
        builder.setPositiveButton("No",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
        builder.create();
        builder.show();


    }

答案 2 :(得分:0)

我猜您正试图退出您的应用。 这是你的答案: How to exit from the application and show the home screen?

@Override
public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

答案 3 :(得分:0)

在活动A中,您可以完成onResume中的所有活动,因为您需要将所有活动存储在staic变量中

活动B

public static B b;
oncreate(){
//...
b=this;
}

对C和D以及A

执行相同的操作
onResume(){
   clearAllTasks();
}

public void clearAllTasks(){
 if(B.b!=null){
   B.b.finish();
 }
 if(C.c!=null){
   C.c.finish();
 }
 if(D.d!=null){
   D.d.finish();
 }
}
清单中的

<application>
  <activity android:name="A"
     android:noHistory="true">
  </activity>
  //...
</application>

答案 4 :(得分:0)

为我工作:

   restart.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                                Intent.FLAG_ACTIVITY_NEW_TASK |
                        Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(restart);