管理和清除活动回栈

Posted

技术标签:

【中文标题】管理和清除活动回栈【英文标题】:Manage and clear activity backstack 【发布时间】:2018-08-09 01:04:20 【问题描述】:

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

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,然后从应用程序中出来。在按下用户应该看到这个活动流程 -

F > E > A > Out from the application`

我不想再跟踪活动 D。我如何在应用程序中实现这一点?

【问题讨论】:

【参考方案1】:

您可以使用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 并启动 Activity。

在活动 F 中:

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

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

   

对要添加回堆栈的其他活动执行此操作

【讨论】:

以上是关于管理和清除活动回栈的主要内容,如果未能解决你的问题,请参考以下文章

活动回栈 FLAG_ACTIVITY_NEW_TASK

图片模式下 Android O 图片的任务列表和回栈

Android中维护标准应用Activity回栈状态(使用singleTask启动模式)

当 Fragment 被替换并放入回栈(或删除)时,它是不是保留在内存中?

使用片段清除回栈

Android - 清除导航回栈