[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);