Kai Kai - 3 months ago 8
Android Question

Understanding of isFinishing()

I got confused after reading Android doc about

isFinishing()
in http://developer.android.com/reference/android/app/Activity.html

If I call
isFinishing()
in
onPause()
, what the return value of
isFinishing()
call should be in the following 3 scenarios?


  1. Activity is being killed due to finish() was called.

  2. An activity is not in the foreground and the activity (not the app) is being killed by OS due to low memory.

  3. Activity is going to background.



I am sure that the result of
isFinishing()
will be true in scenario 1 and will be false in scenario 3.

How about scenario 2? Will
isFinishing()
return true or false in scenario 2?

Answer

Your Activity doesn't get killed by the OS while it's in the foreground. That wouldn't make sense.

However, if the activity goes to the background because the user switched to a different app, it could get killed after onPause() has been processed. As such, you could get isFinishing() == false as the user switches to a new app, but then the app is killed.

As the doc says, save all persistent data in onPause(). onDestroy() is not guaranteed to be called.

(I wouldn't be surprised if Dianne steps in and corrects me here, btw.)