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