NSOperationQueue
是执行多线程任务以避免阻塞主线程的推荐方式。后台线程用于您希望在应用程序处于非活动状态时执行的任务,如GPS指示或音频流。
如果您的应用程序在前台运行,则根本不需要后台线程。
对于简单的任务,你可以在操作使用块添加到队列:
NSOperationQueue* operationQueue = [[NSOperationQueue alloc] init];
[operationQueue addOperationWithBlock:^{
// Perform long-running tasks without blocking main thread
}];
更多信息有关NSOperationQueue和how to use it。
上传过程将在后台继续,但您的应用程序将有资格被暂停,因此上传可能会取消。为了避免它,你可以将下面的代码添加到应用程序委托告诉OS时,应用程序已准备好暂停:
- (void)applicationWillResignActive:(UIApplication *)application {
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Wait until the pending operations finish
[operationQueue waitUntilAllOperationsAreFinished];
[application endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
る要上传背景的录像? – Ganapathy 2013-03-07 10:36:41
是的,这是我正在做的,因为我提到我希望用户在录制视频时继续在窗体上做其他事情 – nsgulliver 2013-03-07 10:37:06
上传时,应用会在前台(执行其他任务),或者它会进入完全的背景? – Ganapathy 2013-03-07 10:40:33