【问题标题】:Android Activity remove from stackAndroid Activity 从堆栈中删除
【发布时间】:2015-10-03 06:58:38
【问题描述】:

我想从任务堆栈中完全删除一个 Activity,但 finish() 似乎只是最小化了任务。如果我单击手机上浏览所有打开的任务的按钮,它仍然存在。我需要把它刷掉才能摆脱它。

我如何真正彻底摆脱 Activity?目前我有启动 Activity_B 的 Activity_A。当我按回时,Activity_B 最小化并且 Activity_A 被带到前面。如何让它简单地摆脱 Activity_B 并返回到 Activity_A?

编辑:

我找到了原因,Activity_B 有 Activity_A 作为父回调 Activity。如果您在 A 调用 B 时不启动新活动,那么它会正常工作(杀死 B 会杀死整个事情,A 不会重新出现)。

【问题讨论】:

  • 你能在stackoverflow中检查类似的问题吗,herehere
  • 是的,我见过这两个。他们提到的两种主要方法我都试过了。 1) android:noHistory="true" 实际上不起作用。 2)启动另一个活动并清除任务。这确实有效,但似乎有点 hacky。必须有一种方法可以简单地结束此活动,而无需启动第二个活动来结束此活动。
  • 检查this。回答,它在同一个问题上对我有帮助。

标签: android android-activity


【解决方案1】:

检查这是你需要的吗?

<activity android:name=".MyActivity"
    android:noHistory="true">
</activity>

【讨论】:

  • 我在类似的问题中看到过,但它不起作用。当我按“返回”时,Activity 会回到堆栈的后面但不会消失......
  • 不是一个好方法,但还是试试这个。。在你的背面写 Intent intent = new Intent(this, ActivityA.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);开始活动(意图);
  • :D 在我对评论我的问题的人的评论中,我提到这确实有效......它看起来很hacky。 Android 活动没有本机方式来结束自己吗?我想如果是这样的话,我将不得不使用 hacky 方式。
【解决方案2】:

你试过了吗:

intent = new Intent(view.getContext(),MainActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);

【讨论】:

    【解决方案3】:

    我最终做的是,当 Activity_A 调用 Activity_B 时,它不会创建新的 Activity,而是替换它。因此,当我摆脱 B(例如,通过将其滑走)时,它不会回到 A。

    否则,B 会对 A 进行回调,然后当你摆脱 B 时,基本上会将 A 带回前面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-11
      • 2013-07-03
      • 1970-01-01
      • 2019-03-20
      • 2012-12-16
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多