6

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

编辑:

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

4

5 回答 5

4

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

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

不过感谢您的帮助。

于 2013-01-02T08:24:22.317 回答
1

试试这个,

添加android:launchMode="singleTop"到您想要清除所有堆叠活动的特定活动。

然后在开始您的特定活动时使用intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)和。intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

来源:Android:清除后台堆栈

于 2013-01-02T01:34:48.607 回答
1
Intent intent = new Intent(getApplicationContext(), YOUR_CLASS.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2013-01-02T02:12:19.977 回答
1

在活动开始之前设置标志......在开始活动后设置标志的意义是什么......代码应该看起来像这样,

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

  removeSessionFiles();
于 2013-01-02T06:11:00.340 回答
0

我知道这是一个旧线程,但我想与任何想知道的人分享 kotlin 中的语法。

 val i = Intent(this@PresentActivity,NextActivity::class.java)
     i.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK and Intent.FLAG_ACTIVITY_NEW_TASK
     startActivity(i)
于 2021-09-12T13:26:56.240 回答