參考:https://www.cnblogs.com/itrena/p/7434174.html
https://blog.csdn.net/csdn_of_coder/article/details/76343031
1.用FLAG_ACTIVITY_CLEAR_TOP 實現(xiàn)清空Activity棧:
能夠清空此棧之前的Activity,清空在即將跳轉的activity之前的棧鲁冯,所以此activity要設置成singline模式素挽。
跳轉時候把他之前的棧都清掉
/**
* 清空跳轉Activity之前的棧
*
* @param clz
*/
public void startClearTopActivity(Class<?> clz) {
startActivity(new Intent(BaseActivity.this, clz).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}
2.FLAG_ACTIVITY_NO_HISTORY
在AndroidManifest.xml設置Activity的屬性noHistory = true,
當啟動新的Activity后之前的Activity不會保存在ActivityTask中娱挨,可以滿足你的需求诽凌。
<activity
android:name=".activity.ServiceActivity"
android:noHistory="true" />
或
Intent.setFlags(FLAG_ACTIVITY_NO_HISTORY)
棧中完全不存放任何activity,每一個都是新生成的舍扰。
3.FLAG_ACTIVITY_CLEAR_TASK:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
這個標記倦蚪,將會導致任何用來放置該activity的已經存在的task里面的已經存在的activity先清空,然后該activity再在該task中啟動边苹,也就是說陵且,這個新啟動的activity變?yōu)榱诉@個空task的根activity.所有老的activity都結束掉。該標志必須和FLAG_ACTIVITY_NEW_TASK一起使用个束。