1. 程式人生 > >Android使用Intent跳轉的時候,如何清除堆疊裡所有的Activity

Android使用Intent跳轉的時候,如何清除堆疊裡所有的Activity

我在開發一塊下單送貨軟體的時候遇到的這個問題.場景描述,使用者從首頁選擇裡訂單,進入了訂單確認頁面,確認後進入了選擇支付頁面,支付成功以後需要返回首頁.如何在進入首頁的時候清除堆疊裡所有的Activity?說說有效的方法吧.FLAG_ACTIVITY_CLEAR_TOP

Intent intent = new Intent(A.this,B.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

看看裡面的安卓原始碼

 /**
     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
     * this flag will cause any existing task that would be associated with the
     * activity to be cleared before the activity is started.  That is, the activity
     * becomes the new root of an otherwise empty task, and any old activities
     * are finished.  This can only be used in conjunction with {@link #FLAG_ACTIVITY_NEW_TASK}.
     */
public static final int FLAG_ACTIVITY_CLEAR_TASK = 0X00008000;

原始碼中明確說明如果在startActivity的時候傳遞FLAG_ACTIVITY_CLEAR_TASK這個標誌,那麼這個標誌將會清除之前所有已經開啟的activity.然後將會變成另外一個空棧的root,然後其他的Activitys就都被關閉了.這個方法必須跟著{@link #FLAG_ACTIVITY_NEW_TASK}一起使用.