我试图清除活动历史堆栈,当用户单击logout button
甚至尝试使用IntentFlag Intent.FLAG_ACTIVITY_NO_HISTORY
但没有运气。看看下面提到的我的场景。清除活动历史堆栈
1)登录屏幕(呼叫完成)
2)第一屏幕(未调用完成)
3)第二个屏幕(未调用完成)
4)第三屏幕(未主叫终)
5)注销屏幕(这将打开登录界面,并获得完成)
要使用下面的代码实现我的目标男,
登录屏幕
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);
}
});
小号屏幕的Econd
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()
同时呼吁从登录屏幕的意图,但我不想保持栈登录屏幕。
您的建议值得商榷。
尝试使用Android:nohistory =“真”在你想要的活动......,并尝试完成,如果你不会再重新使用的屏幕。 – itsrajesh4uguys
您是否试过intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)??? – itsrajesh4uguys
@Rajesh是的,但没有运气 – RobinHood