我正在尝试清除活动历史堆栈,当用户单击时logout button
甚至尝试过IntentFlag Intent.FLAG_ACTIVITY_NO_HISTORY
但没有运气。看看我下面提到的场景。
1) 登录画面(通话结束)
2)第一个屏幕(不调用完成)
3)第二个屏幕(不调用完成)
4)第三屏(未调用完成)
5)注销屏幕(它将打开登录屏幕,然后完成)
为了实现我的目标 m 使用下面的代码,
登录画面
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,FirstActivity.class);
startActivity(intent);
finish();
}
});
登录回事件
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (getIntent().getBooleanExtra("EXIT", false)) {
this.finish();
}else{
this.finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
第一个屏幕
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
});
第二屏
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(SecondActivity.this,ThirdActivity.class);
startActivity(intent);
}
});
第三屏
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(ThirdActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("EXIT", true);
startActivity(intent);
finish();
}
});
问题是,当我单击注销时,它进入登录活动,当我单击返回按钮时,它进入第二个活动。
为什么它没有完成活动以及为什么它会在维护堆栈时转到第二个,当我单击返回时,second activity
它应该转到第二个,不知道我错过了什么。first activity
login screen
更新
如果我在从登录屏幕调用意图时删除,一切正常finish()
,但我不想保留在堆栈登录屏幕中。
你的建议是可取的。