管理和清除活动后台堆栈

时间:2018-03-01 02:15:38

标签: android launchmode

我有一个仪表板活动,我可以从这里移动到某个活动流程,如下所示 -

1) A(DashboardActivity)> B > C > D
2) A(DashboardActivity)> E > F
3) A(DashboardActivity)> G > H > I

假设我已经以这样的方式访问了应用程序,现在我正在进行如下活动D(使用步骤1) - A > B > C > D(当前活动任务堆栈) 现在我想以这样的方式启动活动F(第2步活动) 在后面,它来到E然后A,并将从应用程序出来。 on Press back用户应该看到这个活动流程 -

F > E > A > Out from the application`

我不想再看一下活动痕迹D.我怎样才能在申请中实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用TaskStackBuilder执行此操作。这将帮助您创建后台堆栈。

在活动D中,使用此代码启动活动F

    TaskStackBuilder.create(this)
            .addParentStack(AActivity.class)
            .addNextIntent(new Intent(this, AActivity.class))
            .addNextIntent(new Intent(this, EActivity.class))
            .addNextIntent(new Intent(this, FActivity.class))
            .startActivities();

使用TaskStackBuilder你的最小sdk版本应该是16或更高。

对于少于16的sdk,您可以手动签入onBackPressed并启动活动。

在活动F中:

  @Override
  public void onBackPressed(){
     Bundle extras = getIntent().getExtras();

     if (extras.containsKey("FROM_ACTIVITY_D_FOR_STACK")){
        // start Activity E
     }else{
        super.onBackPressed();
     }

  } 

对于要添加回堆栈的其他活动