NSOperationQueue
是执行多线程任务以避免阻塞主线程的推荐方式。后台线程用于您希望在应用程序处于非活动状态时执行的任务,例如 GPS 指示或音频流。
如果您的应用程序在前台运行,则根本不需要后台线程。
对于简单的任务,您可以使用块向队列添加操作:
NSOperationQueue* operationQueue = [[NSOperationQueue alloc] init];
[operationQueue addOperationWithBlock:^{
// Perform long-running tasks without blocking main thread
}];
有关NSOperationQueue以及如何使用它的更多信息。
上传过程将在后台继续,但您的应用程序将有资格被暂停,因此上传可能会取消。为避免这种情况,您可以在应用程序委托中添加以下代码,以告知操作系统应用程序何时准备好挂起:
- (void)applicationWillResignActive:(UIApplication *)application {
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Wait until the pending operations finish
[operationQueue waitUntilAllOperationsAreFinished];
[application endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}