我想在开始新活动之前关闭堆栈中的所有活动。
这是我的代码
Intent i=new Intent(first.this,secondsct.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
//i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
//i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
但这不起作用。我之前尝试过这个但现在没有。我不知道为什么。任何人都可以知道可能是什么原因。
答案 0 :(得分:7)
我已经尝试过Intent.FLAG_ACTIVITY_CLEAR_TOP但是没有得到合适的解决方案所以最终这对我有帮助
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
清除所有堆栈并仅运行LoginActivity
答案 1 :(得分:1)
您可以与FLAG_ACTIVITY_CLEAR_TOP
一起试用FLAG_ACTIVITY_NEW_TASK
。
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
答案 2 :(得分:0)
每当你想退出时都使用这个功能。希望这能解决你的问题
public void exit()
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
答案 3 :(得分:0)
我也尝试了所有可能的标志,我就像你一样调用finish()
方法。但我找到了一种更好的方法,可以使用finishAffinity()
方法来结束之前的所有活动。
第三个答案提出了这个解决方案here。它解决了我的问题。希望它能解决你的问题。