Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Need clarification about UIApplicationState

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.

like image 562
Sam Avatar asked Oct 29 '11 06:10

Sam


People also ask

How do I know if apps are running in the background iOS?

Go to Settings>General>Background App Refresh and you can see what other apps are allowed to update data in the background. iOS dynamically manages memory without any user intervention. The only apps that are really running in the background are music or navigation apps.

How do I know if an app is in the background or foreground iOS?

To detect if an iOS application is in background or foreground we can simply use the UIApplication just like we can use it to detect many other things like battery state, status etc. The shared. application state is an enum of type State, which consists of the following as per apple documentation.


3 Answers

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.

like image 158
forgot Avatar answered Oct 21 '22 09:10

forgot


Apple documentation: UIApplicationState Constants Reference

  • Swift: .Active | Objective-C: UIApplicationStateActive

The app is running in the foreground and currently receiving events.

Available in iOS 4.0 and later.

  • Swift: .Inactive | Objective-C: UIApplicationStateInactive

The app is running in the foreground but is not receiving events. This might happen as a result of an interruption or because the app is transitioning to or from the background.

Available in iOS 4.0 and later.

  • Swift: .Background | Objective-C: UIApplicationStateBackground

The app is running in the background.

Available in iOS 4.0 and later.

like image 34
Wagner Sales Avatar answered Oct 21 '22 10:10

Wagner Sales


Some examples:

UIApplicationStateActive - App is running in foreground. Simple.

UIApplicationStateInactive - E.g. App was in the background and is opening through a push notification (transitioning atm). Or the control/notification center is presented above your app. You kind of see it, is in foreground.

UIApplicationStateBackground - App is in the background, but still running. E.g. playing music. Then - this can take a while or not (depending on process you are running in background), but in one point your app is killed. You will see app's snapshot and icon between minimized apps, but the app will be launch again first.

like image 42
Jakub Truhlář Avatar answered Oct 21 '22 08:10

Jakub Truhlář