2010-11-28 47 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]; 
    } 
}