Android onBackPressed/onUserLeaveHint

10
其实只需要一点建议。我在游戏中运行一个Activity,当用户按下返回按钮时,它会使用onBackPressed()方法退出返回到主菜单,但是我还重写了onUserLeaveHint()方法以执行相同的操作,如果按下Home按钮或接听电话。然而,当按下返回按钮时,此方法也会被调用,这意味着Main Menu Intent被调用了两次,其中一个在另一个之上。
如果有人知道如何解决这个问题或更好地处理这两个事件,将不胜感激。
谢谢。
2个回答

11

onUserLeaveHint() 是一个受保护的方法,与活动的其他生命周期方法一样,如果您正在处理 onUserLeaveHint,那么它将处理以下情况:

  1. 用户按下Home键时
  2. 用户按下返回键时
  3. 用户按下通知栏时

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


16
当按下返回键时,它没有被调用。只有在按下主页键或从该活动内启动另一个活动时才会被调用。 - Shobhit Puri
2
有时候当你启动一个新的活动时,它也被称为。 - Snake
3
onUserLeaveHint 只有在按下主页按钮时才会被调用,而 onBackPressed 则是在按下返回按钮时被调用。 - Chetan Gupta

2

这是一个可能对你有帮助的想法,我正在使用它来确定用户是否已经到达主要(也是最后)活动页面,然后退出。我手动启动主活动,并通过设置FLAG_ACTIVITY_CLEAR_TOP标志清除整个活动栈,因此如果用户再次点击返回按钮,应用程序将被关闭。

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

如果我收到了两次相同的活动启动,从显示堆栈中删除最后一个活动是否安全? - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接