Android 如何清除活动下方的活动堆栈

Android 如何清除活动下方的活动堆栈,android,android-activity,Android,Android Activity,在我的应用程序中,当我启动一个特定的活动时,我希望从下面的堆栈中清除同一个包中的所有活动。有人能帮我做这个吗? 另外,我不想在清单中使用android:noHistory=“true”,因为我只希望在启动此特定活动时清除堆栈历史记录 编辑: 为了更清楚地说明我的观点,假设我有活动a。我从a开始活动b。从b开始,我从c开始。但当我启动c时,我想清除b和a。试试这个 将android:launchMode=“singleTop”添加到要清除所有堆叠活动的特定活动中 然后在启动特定活动时使用inten

在我的应用程序中,当我启动一个特定的活动时,我希望从下面的堆栈中清除同一个包中的所有活动。有人能帮我做这个吗? 另外,我不想在清单中使用
android:noHistory=“true”
,因为我只希望在启动此特定活动时清除堆栈历史记录

编辑:

为了更清楚地说明我的观点,假设我有活动a。我从a开始活动b。从b开始,我从c开始。但当我启动c时,我想清除b和a。

试试这个

android:launchMode=“singleTop”
添加到要清除所有堆叠活动的特定活动中

然后在启动特定活动时使用
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP)
intent.addFlags(intent.FLAG\u ACTIVITY\u NEW\u TASK)


来源:

在活动开始前设置标志…在活动开始后设置标志的意义是什么…代码应该如下所示

Intent intent = new Intent(getContext(), ClassName.class);
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
  v.getRootView().getContext().startActivity(intent);

  removeSessionFiles();

哦,伙计们,我发现您只需将以下代码与启动堆栈清除活动的意图放在一起:

Intent i = new Intent(this,MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

不过,感谢您的帮助。

为此,我的清除活动不必位于堆栈底部。我希望它在顶端。不,不是这样的。我编辑了答案以使我的问题更清楚。实际上,这段代码不在onClick方法中。它位于服务中BroadcastReceiver的onReceive方法中。可能您可以尝试类似的方法。假设在我们的应用程序中,我们有许多活动(比如说十个),我们需要直接退出此活动。我们可以做的是,创建一个intent并转到根活动,并将intent中的标志设置为'intent.setFlags(intent.flag\u activity\u CLEAR\u TOP);另外,在intent.putExtra(“EXIT”,true)中添加一些额外的类似布尔值;然后在根活动中,检查布尔值,并根据该调用finish(),在根活动的onCreate()中,如果(getIntent().getBooleanExtra(“EXIT”,false)){finish();}对于每个活动,可以在每次意图传递后使用finish()。第二种方法是FLAG_ACTIVITY_CLEAR_TOP,FLAG_ACTIVITY_NEW_TASK,然后还可以使用intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY。希望这对您有所帮助。很抱歉,如果您仔细阅读问题,您会发现我提到我希望在启动此特定活动时清除堆栈历史记录,而不是任何其他活动。因此,如果我在暂停时完成所有活动,那么它将不会在我希望的时候出现。我只是不知道ant启动我提到的特定活动时堆栈将在那里,因为它是一个透明的活动。为此,请在调用所需的特定活动之前使用Intent.FLAG\u activity\u NO\u HISTORY。请检查我答案中附带的stackoverflow链接。这正是我在回答中提到的。很高兴您找到了它。很抱歉,我的答案是wer有i.addFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TASK)not Intent.FLAG\u ACTIVITY\u CLEAR\u TOP。谢谢您的支持。
Intent i = new Intent(this,MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);