问题描述:

I am trying to detect if my app became active from multi-tasking and display a dialog.

The use-case is something like this: User is using the app -> Hits the home button -> Does something -> User taps on the app again

As expected, the last activity the user was on is being shown.

I want to display a dialog when this happens. I used onRestart() for the same and it works. Only problem is, even when the user goes to some activity in the app and then hits back, the dialog is being displayed.

I went through the activity lifecycle several times, but couldn't figure out the solution. Any ideas?

网友答案:

Well, you can tell the foreground application using the technique outlined in Determining the current foreground application from a background task or service: look for getForegroundApp. You could run a timer that checks periodically to see if the app is foreground, and if its not then set a variable after a suitable delay (to make sure you don't happen to hit it in the wrong order when switching Activities). Clear the variable in onStart, and if onCreate of the rooth Activity is ever called you know that the app just became Active.

网友答案:

I achieved this by setting a flag in Shared Preferences in onStop() and cleared it in onDestroy().

Then I overrided the Back button to clear the flag whenever it is pressed. This solves the problem I had stated.

Now in onRestart(), if the flag is true.... I display the dialog.

I know it is not the most elegant solution but does the job! Hope this helps somebody.

相关阅读:
Top