如何pipe理活动堆栈?

当我的堆栈在这种情况下:

A->B->C 

如果我开始D活动,我希望活动堆栈变成:

 A->D 

请注意,活动C是一个对话框。

Solutions Collecting From Web of "如何pipe理活动堆栈?"

这里是需要的步骤:

  • 从活动C启动活动A与绑定意图和标志FLAG_ACTIVITY_CLEAR_TOP集的布尔fromActivityC
  • 现在创build活动首先检查这个布尔“fromActivityC”,如果存在,启动活动D否则正常stream程继续。

     // following code can be used to get the boolean in the oncreate boolean entrypoint=this.getIntent().getExtras().getBoolean("fromActivityC"); 

一个律的解决方法,但希望它有帮助

有几种方法可以从堆栈中删除活动或防止堆叠:

要从堆栈中删除你的活动,只需调用finish() ,见这里 。

您也可以在清单中实现以下属性:android:noHistory =“true”,以防止堆叠活动。

看到这个问题forms更多的细节: 从历史堆栈中删除一个活动

有点不好意思,但是你可以在清理堆栈的时候启动A,然后启动D。

活动A 可能会在消失之前出现一会儿

在启动A时,您可以尝试在启动ActivityB时完成ActivityB ,并在ActivityC完成相同的操作。

你的代码看起来像这样:

 Intent i = new Intent(this.class.ActivityC); startActivity(i); ActivityB.finish(); 

在C的callback中,将消息传回给A,并从Acall完成启动你的D,这将完成B和C(因为C是B的分隔)。

这里是一个更好的解决scheme,不依赖于评估AIntent内容:使用标志FLAG_ACTIVITY_TASK_ON_HOME

你也应该看看Android Intent的其他标志