您只需撥打beginBackgroundTaskWithExpirationHandler:
而當您開始下載過程時,您的應用程序在前臺右側。請注意,您必須返回值存儲在伊娃/屬性:
@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTaskID;
@synthesize backgroundTaskID;
...
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
self.backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
// Cancel the connection
[connection cancel];
}];
這將使您的應用程序繼續運行,如果下載運行時,它就會被髮送到後臺。然後,在表示下載的完成你的委託方法,你必須把匹配endBackgroundTask:
:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
// Handle the error
...
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskID];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// Save the downloaded data
...
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskID];
}
文件稱「雖然應用程序是在前臺,後臺任務將不會有任何影響;但,如果用戶將應用程序移動到後臺,後臺任務的存在將自動保持應用程序運行,以便它可以完成操作。「這對我來說非常有意義,因爲後臺任務應該如何工作 - 一旦您在前臺開始任務(例如下載文件),如果應用程序進入後臺,它將完成下載任務,而不會減少網絡連接。 – sbs 2013-02-26 20:43:33