【问题标题】: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。我如何在应用程序中实现这一点?

【问题讨论】:

    标签: android launchmode


    【解决方案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();
         }
    
      } 
    

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

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 2016-10-14
      • 1970-01-01
      • 2011-09-19
      • 2017-08-11
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多