【问题标题】:Android app exist when home button is pressed. Clicking app icon starts app over. I want it to just unpause按下主页按钮时存在 Android 应用程序。单击应用程序图标启动应用程序。我希望它只是取消暂停
【发布时间】:2012-06-26 03:49:20
【问题描述】:

在我的游戏中,如果用户点击后退按钮,我会弹出一个对话框,询问他们是否真的要退出。但是,我不能对主页按钮做同样的事情,因为没有办法覆盖它。

如果用户知道任务管理器的技巧,他们可以按住 home 并切换回应用程序,而不会失去他们的位置。

如果他们不知道其中的技巧,他们只需再次选择该图标即可从主菜单重新启动应用程序。

有没有办法覆盖这个行为,而不是从主菜单开始,如果应用程序当前正在运行,它会回到原来的位置?

我知道我可以在应用暂停时保存所有内容的状态,然后以编程方式重新加载所有内容并将它们发送到它们所在的位置。如果可能的话,我想避免做所有这些工作。

【问题讨论】:

  • 这不是您所描述的正常行为。有一个 Activity 堆栈是有原因的,当您离开应用程序以快速访问主屏幕时,该堆栈通常不会被破坏。同样没有任务管理器的技巧,只需点击我的应用程序图标,我就可以直接回到我离开应用程序的位置。没有技巧没有特殊设置。 OnPause 也不是保存应用程序状态的正确点。请改用 onSaveInstanceState。
  • 我尝试了其他一些应用程序,你是对的,它们似乎跳回了原来的位置。我的应用程序的行为并非如此。知道我可能在做什么导致它总是从主菜单开始吗?有这样的设置吗?

标签: android restart android-homebutton


【解决方案1】:

但是,我不能对主页按钮执行相同操作,因为无法覆盖它。

实际上,您可以覆盖主页按钮。

  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            //do your stuff
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

有没有办法覆盖这个行为,而不是从主菜单开始,如果应用程序当前正在运行,它会回到原来的位置?

关于这个,最好的办法是在每个Activity 中覆盖onPause() 方法。但是不能保证它,因为当用户离开它时,操作系统可能会选择杀死你的应用程序(可能是为了资源需求)。因此,在这种情况下,您的应用程序将从主菜单开始,您无能为力。

【讨论】:

  • 如果我覆盖 onPause,我会在那里做什么?你是说那是我保存应用程序状态的地方,还是有同样的自动方法来保存应用程序状态?
  • 您可以简单地在onPause() 中重新启动相同的Activity,或者您可以设置一个SharedPreference 以了解在应用程序暂停时哪个Activity 正在运行,然后恢复它Activity,或者你可以,如你所说,保存应用程序状态。
  • onPause 也不是启动 Activity 的正确位置。尤其是不同的 Activity,因为这基本上会使后退按钮功能失调,并且用户正在“绕圈跑”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多