Home » Android » Android onBackPressed/onUserLeaveHint

Android onBackPressed/onUserLeaveHint

Posted by: admin June 15, 2020 Leave a comment

Questions:

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.

How to&Answers:

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.

Answer:

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);