保持根系活力,甚至开始新的活动,清除背部栈

问题描述:

我将开始在下面的系列活动后:保持根系活力,甚至开始新的活动,清除背部栈

A-> B-> C-> d 现在我要开始另一项活动猜想E从D清除堆栈,但保留活动A作为根活动。 启动E后,堆栈应该是A-> E。我怎样才能做到这一点?

+0

[Android的突然离开活动堆栈]的可能的复制(https://*.com/questions/3517063/android-popping-off-the-activity-stack) – matoni

+0

@ matoni这不重复。你提到的那个是告诉清除任务。在这里,我问的是开始一个活动,并清除堆栈,但根活动应该在那里。 – Aju

可以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(); 

当您的开始活动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(); 
     } 
    }