2017-02-16 67 views
0

是否可以清除所有後退堆棧而不使用意圖?無意清除所有後退堆棧

如果用戶在當前活動中做某些事情,所以當後退按鈕按下的應用程序應該關閉時,我有一種情況需要清除所有後退堆棧。

回答

1

我不認爲你可以清除後備堆棧。

我有一個情況需要如果用戶對 東西在當前活動,所以當後退按鈕按下應用 應該關閉以清除所有回棧。

可以將部分boolean標誌變量設置爲true當用戶做的東西在活動,然後覆蓋onBackPressed()onBackPressed()檢查這個標誌,如果true通話System.exit(0);

+0

完成()僅關閉當前的活動,並在後臺堆棧之前的活動會被顯示。 – farhang67

+0

是的,你是對的,對不起,我已經編輯我的回答 –

+0

使用'System.exit(0);' –

3

您可以使用FinishAffinity

從技術文檔:

完成此活動,並試圖在它下面立即 完成在具有相同的親和力當前任務的所有活動。

在Currnet活動:覆蓋onBackPressed()

@Override 
public void onBackPressed() { 
    if(condition) 
     finishAffinity(); //closes application 
} 

需要SDK> 16

0

如果知道活動應該在你開始的那一刻只有一個,你可以使用FLAG_ACTIVITY_CLEAR_TASK。從文檔:

如果傳遞給Context.startActivity(一個Intent設置),這個標誌將 導致活動開始前將與該活動相關聯,以 任何現有任務被清除。也就是說,活動 成爲其他空任務的新根,並且任何舊的活動都已完成。這隻能與 FLAG_ACTIVITY_NEW_TASK結合使用。

在這種情況下,你應該開始的活動像:

Intent i = new Intent(OldActivity.this, NewActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(i);