Android onBackPressed / onUserLeaveHint

时间:2011-07-07 14:17:07

标签: android

真的需要一些建议。我有一个Activity在我的游戏中运行,当用户按下Back按钮时,它将使用onBackPressed()方法退回到主菜单,但是我也会覆盖onUserLeaveHint()以执行相同的操作按下按钮或接到电话。但是,当按下“返回”按钮时也会调用此方法,这意味着主菜单意图被调用两次,其中一个在另一个上面。

如果有人知道如何解决这个问题或更好地处理这两个事件,那将非常感激。

感谢。

2 个答案:

答案 0 :(得分:10)

onUserLeaveHint()是一个受保护的方法,作为活动的其他生命周期方法,如果您正在处理onUserLeaveHint,这将处理以下情况

  1. 当用户点击主页键时
  2. 当用户点击密钥
  3. 当用户点击信号器栏
  4. 基本上它提示用户试图离开您的活动。这意味着如果您正在处理onUserLeaveHint(),则无需在代码中处理onBackPressed()

答案 1 :(得分:2)

只是一个可以帮助你的想法,我将它用于我的“自制”ActionBar,以确定用户何时实际到达主要(和最后)活动,然后退出。我手动启动Main-Activity并通过设置FLAG_ACTIVITY_CLEAR_TOP标志清除整个活动堆栈,因此如果用户现在再次点击后退按钮,则应用程序将关闭。

Intent intent = new Intent(getContext(), MainMenu.class).
setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);