В документации Apple есть следующий пример для получения времени выполнения в фоновом режиме и выполнения некоторых задач после того, как приложение было переведено в фоновый режим. В чем преимущество выполнения задачи с использованием dispatch_async? т.е. когда приложение находится в фоновом режиме, в чем разница между работой в «основном потоке» и «асинхронно в фоновом потоке»?
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}