1

我的堆栈中有以下活动:

A , B , C, D 

我想重新启动 B 以获得这个堆栈:

A , B'

其中 B' 是一个新的 B 实例(不是旧的接收 onNewIntent 回调,我该怎么做?

顺便说一句,我正在使用

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

启动 B 活动时,但通过这种方式调用 onNewIntent 而不是启动新实例

4

2 回答 2

5

在清单文件中使用 android:noHistory=true 清除特定活动。希望这可以解决您的问题。

于 2013-04-25T10:01:58.330 回答
2

在这里,当您使用此代码时,它会带您进行活动 B。在 B 中,您按下后退按钮,它将带您进行 A。

Intent fromDtoB = new Intent(this,B.class);
fromDtoB.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(fromDtoB);

FLAG_ACTIVITY_CLEAR_TASK:如果在传递给 Context.startActivity() 的 Intent 中设置,此标志将导致在活动启动之前清除与活动相关联的任何现有任务。

FLAG_ACTIVITY_CLEAR_TOP:如果设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是关闭它上面的所有其他活动,并且此 Intent 将被传递到(现在在顶部)作为新意图的旧活动。

于 2013-04-25T10:05:19.823 回答