Android onBackPressed/onUserLeaveHint

Nic*_*ick 7 android

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

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

谢谢.

And*_*dyW 11

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

  1. 当用户点击主页键时
  2. 当用户点击密钥时
  3. 当用户点击信号器栏时

基本上它暗示用户试图离开你的活动.这意味着如果您正在处理onUserLeaveHint(),则无需处理onBackPressed()代码.

  • 按下后退键时,不会调用它.它会在点击Home Key时调用,或者如果从该活动中启动了一个活动. (10认同)
  • `onUserLeaveHint` 仅在按下主页按钮时调用,`onbackpressed` 在按下后退按钮时调用 (3认同)
  • 有时当您开始一项新活动时也会调用它 (2认同)

iDr*_*oid 2

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

Intent intent = new Intent(getContext(), MainMenu.class).
setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)