【问题标题】:moveTaskToBack(true) returns false alwaysmoveTaskToBack(true) 总是返回 false
【发布时间】:2013-01-23 06:13:10
【问题描述】:

我知道之前有人问过这个问题here 和here too。他们没有得到正确的回答(或根本没有回答)。但是,我不知道为什么moveTaskToBack(true); 总是为我返回 false。任何人都可以告诉我为什么以及如何解决这个问题?提前致谢。

public void onBackPressed() {       
    boolean r=  moveTaskToBack(true);
    //r is false !! using API LEVEL 8
}

注意:我调用它的活动是 tabActivity 中包含的子 Activity,这两者都不是 MAIN 或 LAUNCHER 活动。我不知道这是否会有所不同。

编辑: 因此应用程序不会进入后台。我希望它进入后台,就像按下硬件 HOME 一样

【问题讨论】:

  • 它对我有用。我也在调用 super.onBackPressed()
  • @Sweety 你是从 `MAIN'/'LAUNCHER'​​ Activity 中调用它吗?
  • @Sweety super.onBackPressed() 退出应用程序,当您从最近的应用程序中再次选择它时,它会重新启动它。我正在 API 8 模拟器中对此进行测试。
  • 不,它来自子活动。我认为您将不得不处理 onResume()

标签: java android android-activity


【解决方案1】:

我不知道为什么moveTaskToBack(true) 会为你返回false。也许你的清单中有一些奇怪的东西?无论如何,您可以这样做来调出主屏幕:

Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);

但是,请注意this message:

“您无法模拟按下 Home 键。” — Roman Guy,Android 框架工程师

我不确定这与我建议的代码(我在与 Roman 的声明相同的线程上发现的,并且似乎有效)如何匹配。

【讨论】:

  • 这是一个很好的通用方式。把它放在我的 baseActivity 中。谢谢!
  • 有趣的是,当我处于moveTaskToBack(true) 返回 false 的情况下,这段代码什么也不做。
  • @androidguy - 这很有趣。你知道为什么 moveTaskToBack(true) 首先返回 false 吗?此外,日志中是否有任何内容表明我建议的代码不会显示主屏幕的原因?我原以为这会一直有效。
  • @TedHopp 当我返回带有 REORDER_TO_FRONT 标志的任务根活动时,它仅在某些 API 级别上,例如 M 并且可能更低(不确定 L 没有检查)。在 N 中这种更不寻常的场景中工作似乎是“固定的”。只是想指出这一点,以防有人试图在与我相同的场景中使用它......
【解决方案2】:

只写:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
    //  super.onBackPressed();
}

【讨论】:

    【解决方案3】:

    我遇到了类似的问题(tabActivity 中包含的子 Activity),当您在子 Activity 中调用 moveTaskToBack(true) 时,它不起作用,而 它起作用在父活动中。您可以像这样在子活动中调用 moveTaskToBack(true): ChildActivity.this.getParent().moveTaskToBack(true)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2021-11-05
      相关资源
      最近更新 更多