[Android 清空activity栈的方法]
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
这个标记,将会导致任何用来放置该activity的已经存在的task里面的已经存在的activity先清空,然后该activity再在该task中启动,也就是说,这个新启动的activity变为了这个空task的根activity.所有老的activity都结束掉。该标志必须和FLAG_ACTIVITY_NEW_TASK一起使用。
设置Intent.setFlags(Intent.FLAG_ACTIVITY_TOP)能够清空此栈之前的Activity
清空在即将跳转的activity之前的栈,所以此activity要设置成singline模式。跳转时候把他之前的栈都清掉
在AndroidManifest.xml设置Activity的属性noHistory = true,当启动新的Activity后之前的Activity不会保存在ActivityTask中,可以满足你的需求。
Intent.setFlags(FLAG_ACTIVITY_NO_HISTORY)
栈中完全不存放任何activity,每一个都是新生成的。
最终代码
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);