2012-07-26 30 views

回答

1

参考下面的代码。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    UIApplication* app = [UIApplication sharedApplication]; 

    //Create a task object 
    __block UIBackgroundTaskIdentifier backgroundTask; 

    backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (backgroundTask != UIBackgroundTaskInvalid) { 
       [app endBackgroundTask:backgroundTask]; 
       backgroundTask = UIBackgroundTaskInvalid; 
      } 
     }); 
    }]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (backgroundTask != UIBackgroundTaskInvalid) { 

       // do stuff    

       [app endBackgroundTask:backgroundTask]; 
       backgroundTask = UIBackgroundTaskInvalid; 
      } 
     }); 
    }); 
} 
1

您可以在您的应用程序指向后台后执行任务,但只限于提供的持续时间。长时间运行会导致您的应用程序被终止。请参阅iOS应用程序编程指南的“Completing a Long-Running Task in the Background”部分了解如何解决此问题。

相关问题