2017-08-11 101 views
1

我將開始在下面的系列活動後:保持根系活力,甚至開始新的活動,清除背部棧

A-> B-> C-> d 現在我要開始另一項活動猜想E從D清除堆棧,但保留活動A作爲根活動。 啓動E後,堆棧應該是A-> E。我怎樣才能做到這一點?

+0

[Android的突然離開活動堆棧]的可能的複製(https://stackoverflow.com/questions/3517063/android-popping-off-the-activity-stack) – matoni

+0

@ matoni這不重複。你提到的那個是告訴清除任務。在這裏,我問的是開始一個活動,並清除堆棧,但根活動應該在那裏。 – Aju

回答

1

可以acheive與TaskStackBuilder。這個老兄讓你重建你需要的堆棧。您需要somethink這樣的:

final Intent activityAIntent = new Intent(this, ActivityA.class); 
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

TaskStackBuilder.create(this) 
       .addNextIntent(activityAIntent) 
       .addNextIntent(new Intent(this, ActivityE.class)) 
       .startActivities(); 
0

當您的開始活動E從D首先清除標記頂部或finishAffinity()。因此,您之前的所有活動都已關閉。並從背後開啓第一項活動。

在E Activity中添加OnBackPressed方法。

像這樣

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     Intent intent = new Intent(getApplicationContext(), AActivity.class); 
     startActivity(intent); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      finishAffinity(); 
     } else { 
      finish(); 
     } 
    }