Android 清空 Activity 栈的方法
清空 Activity 栈的方法,如下:
- Intent.setFlags(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);