管理和清除活动回栈
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();
对要添加回堆栈的其他活动执行此操作
【讨论】:
以上是关于管理和清除活动回栈的主要内容,如果未能解决你的问题,请参考以下文章
Android中维护标准应用Activity回栈状态(使用singleTask启动模式)