10

Just a bit of advice needed really. I have an Activity running with my game in it and when the user presses the Back button it will exit back to the Main Menu using the onBackPressed() method, but I am also overriding the onUserLeaveHint() to do the same action if the Home Button is pressed or a phone call is received. However this method is also called when the Back button is pressed, meaning that the Main Menu Intent is called twice with one on top of the other.

If anyone has an idea about how to get around this issue or a better way of handling the two events it would be much appreciated.

Thanks.

Nick
  • 101
  • 1
  • 1
  • 3

2 Answers2

11

onUserLeaveHint() is a protected method as other lifecycle methods of the activity and if you are handling onUserLeaveHint this will take care of the following case

  1. When User hits home key
  2. When User hits back key
  3. When User hits annunciator bar

Basically it hints about the user is trying to leave your activity. That means if you are handling onUserLeaveHint() you don’t need to handle onBackPressed() in your code.

Udo Held
  • 12,314
  • 11
  • 67
  • 93
AndyW
  • 1,431
  • 16
  • 22
  • 16
    When back key is pressed, it is not being called. It gets called on hitting Home Key or if an activity is started from within that activity. – Shobhit Puri Jul 10 '13 at 20:54
  • 2
    It is also called when you start a new activity sometimes – Snake Sep 08 '13 at 16:06
  • 3
    `onUserLeaveHint ` is only called when home button is pressed , `onbackpressed` is called when back button is pressed – Chetan Gupta May 01 '20 at 19:06
2

Just an idea that might help you, i'm using it for my "home-made" ActionBar to determine when the user has actually arrived at the main (and last) activity before exiting. I start the Main-Activity manually and clear the whole activity stack by setting the FLAG_ACTIVITY_CLEAR_TOP flag, so if the user now hits the back button once again, the app is gonna get closed.

Intent intent = new Intent(getContext(), MainMenu.class).
setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
iDroid
  • 10,403
  • 1
  • 19
  • 27
  • If i'm getting the same activity launched twice, would it be safe to just remove the last activity from the Display Stack? – Nick Jul 07 '11 at 14:57