Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何清除后台?_Android_Back Stack - Fatal编程技术网

Android 如何清除后台?

Android 如何清除后台?,android,back-stack,Android,Back Stack,在我的应用程序中有4个活动,分别是A、B、C、D 从活动A来看,这是一个启动屏幕 Intent intent = null; if(userLogin()) { intent = new Intent(A.this, B.class); startActivity(intent); finish(); } else { intent = new Intent(A.this, c.class); startActivity(intent); finish(); } A和B

在我的应用程序中有4个活动,分别是A、B、C、D

从活动A来看,这是一个启动屏幕

Intent intent = null;
if(userLogin()) {
  intent = new Intent(A.this, B.class);
  startActivity(intent);
  finish();
}
else {
  intent = new Intent(A.this, c.class);
  startActivity(intent);
  finish();
}
A和B都调用相同的活动D,它是登录或注销屏幕 来自活动D

String calledActivity = getIntent().getStringExtra("CALLED_ACTIVITY");

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if(keyCode == KeyEvent.KEYCODE_BACK) {
    if(calledActivity.equal("C") && userLogin()) {
      Intent intent = new Intent(D.this, B.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(intent);
      finish();
    }
    else if(calledActivity.equal("B") && !userLogin()) {
      Intent intent = new Intent(D.this, C.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(intent);
      finish();
    }
    else 
      finish();
    return true;
  }
  return false;
}
如果用户未登录,则在调用D之前,堆栈为C

如果usr未登录,则调用D后,堆栈为C->D

如果用户登录,则从活动D按back后,堆栈为C->B

但最初我想,堆栈是B


请帮助我解决此问题,谢谢您使用以下标志启动B:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK);
这将清除B之前的所有视图,堆栈将仅包含B


尽管API 11提供了标记活动清除任务。

使用以下标记启动B:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK);
这将清除B之前的所有视图,堆栈将仅包含B


尽管API 11提供了标记活动清除任务。

使用此代码启动新活动。所有的堆垛都将被清除

Intent Intent=newintentgetbasecontext,Registration.class; intent.setFlagsInt.FLAG_活动_清除_任务| intent.FLAG_活动_新任务;
星状体

使用此代码启动新活动。所有的堆垛都将被清除

Intent Intent=newintentgetbasecontext,Registration.class; intent.setFlagsInt.FLAG_活动_清除_任务| intent.FLAG_活动_新任务;
星状体

亲爱的,请告诉我你的困惑是什么亲爱的,请告诉我你的困惑是什么