2010-11-28 75 views
7

我正在使用NSURLConnection在iOS中異步下載資源。 (他們是大文件PDF文件,所以需要一些時間緩慢連接。)iOS中的NSURLConnection和多任務處理

現在我正在更新我的應用程序從iOS 3到iOS 4.由於我的應用程序是沒有位置感知,VoIP,和背景音樂,我想我需要做點什麼。

我的問題是,那麼目前運行的NSURLConnection會發生什麼?當應用程序回到前臺時它是否暫停並且神奇地恢復,還是完全被殺死?如果是後者,那麼稍後自動恢復的標準策略是什麼?是否有一個NSURLConnection的開源子類可以自動執行此操作?

+0

請發表您對這個課題的研究,將是我樂於助人,別人:) – 2010-11-29 08:54:02

回答

1

您可以開始一個至多運行10分鐘的任務。看看使用beginBackgroundTaskWithExpirationHandler: API來達到這個目的。請注意,如果您的任務耗時過長,則會被操作系統殺死。

+0

這並沒有真正回答問題......'我的問題是,那麼當前正在運行的NSURLConnection會發生什麼?當應用程序回到前臺時,它是否暫停並魔法恢復,還是完全被殺死?「 – gcamp 2010-11-28 15:23:11

+0

其實它確實如此。只有4種情況下* ANY *代碼能夠存活到後臺,並且它們是您提到的三個,加上這一個。您需要在應用程序開始轉換狀態之前的某個時候啓動後臺任務,以確保如果用戶退出,則下載將繼續在後臺運行。如果你需要取消任務,那麼也有一個API。 – jer 2010-11-28 15:26:24

1

當應用程序進入前臺時,NSURLConnection確實會暫停並重新啓動。只要確保你殺了,如果移動應用程序的連接,從暫停不運行,像這樣:

- (void)applicationWillTerminate:(UIApplication *)application { 
    if (self.downloadConnection != nil){ 
     [self.downloadConnection cancel]; 
    } 
}