Android 如何清除后台?
在我的应用程序中有4个活动,分别是A、B、C、D 从活动A来看,这是一个启动屏幕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
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_活动_新任务;
星状体 亲爱的,请告诉我你的困惑是什么亲爱的,请告诉我你的困惑是什么