When an iOS application goes to the background, are lengthy tasks paused?

Viewed 68611

Yes, I know if I wish my app to be responsive to users' multitasking actions, such as switch to another app, I should deal with

- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application

What if my app is doing a quite-long time consuming operation (like downloading a big file) and the user causes my app to enter the background? Will that operation automatically be suspended and resumed when the user comes back to my app?

What exactly will happen behind the scene when my app enters the background or resumes in the foreground?

What if when users let my app go to the background my app's execution is just in the middle of a method?

For e.g., my app is doing

for (int i = 1 to 10000K) {
    do some calculation;
}

When i== 500K, user switches to another app. What happens to the for-loop in my app?

3 Answers

Like mentioned above, there are a few cases where your app runs in the background and apple can allow or deny depending on what you are doing.

https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

More importantly if you do fit into one of these categories your app refresh rate is determined by an apple algorithm that takes into consideration your app usage on that device vs other apps. If your app is used more often then it gets more background time allotted. This is just one variable but you get the idea that background time allocation varies app to app and not under your control.

Related