我的堆栈中有以下活动:
A , B , C, D
我想重新启动B以获得此堆栈:
A , B'
其中B'是一个新的B实例(不是旧的接收onNewIntent回调,我怎么能这样做?
顺便说一句,我正在使用
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
启动B活动但这样调用onNewIntent而不是启动新实例
答案 0 :(得分:5)
在清单文件中使用android:noHistory = true来清除特定活动。希望这可以解决您的问题。
答案 1 :(得分: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:如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将传递此意图作为新意图的(现在在顶部)旧活动。