Need clarification about UIApplicationState

Sam picture Sam · Oct 29, 2011 · Viewed 22k times · Source

I need your help in clarifying my understanding of the various states of an app. I am going to state my interpretation - but please feel free to correct me.

1) App is launched and running in the foreground: state = UIApplicationStateActive
2) User pushes home button: state = UIApplicationStateBackground (????).

 Debug stmt in my app shows it to be Active

3) User double-taps Home and kills the app: state = UIApplicationStateInactive

If the value for case 2 is indeed Active, then when is the value set to Background?

My location-based app relies on this values to take appropriate action for the user.

if ( ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) ||
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)      ) {
    // isInBackground = YES;
    //  ------ UI not available
}
else {
   // isInBackground = NO;
   //   ------ UI is available
}

Regards, Sam.

Answer

forgot picture forgot · Mar 1, 2012

When the user taps on the app icon, the app briefly goes through a transitional state of UIApplicationStateInactive on its way to becoming UIApplicationStateActive. This is where the app gets itself ready to display to the user.

When the app is open, the application state is UIApplicationStateActive.

If the user presses the home button, and is returned to the springboard (home screen), or the application is interrupted by something, such as a phone call, the application state transitions back to UIApplicationStateInactive.

For the application state of your app to become UIApplicationStateBackground, your application would have to register for a background process. Look into how to background your location services.