继续在后台下载

我正在创build一个应用程序,其中我从服务器上下载一些数据。 在后台进行时,我希望该连接应该继续运行,以便可以下载数据。 我知道在AppDelegate有方法

- (void)applicationDidEnterBackground:(UIApplication *)application 

这是应用程序进入后台时调用的。 但是,由于连接是在viewController中创build的,它如何在appDelegate中进行pipe理?
还有其他的方法可以做到吗? 我已经通过这个链接,但有一个简单的实施?

在后台执行某些操作的一种方法是创build一个单独的线程来执行下载。 在线程内,在调用beginBackgroundTaskWithExpirationHandler:和endBackgroundTask之间包含下载操作。 你不需要检查你是否在后台运行,你总是调用这两个方法。

 // Tell iOS this as a background task in case we get backgrounded UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; //---------------------------------------------- // Perform your download operations here //---------------------------------------------- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; // Tell iOS that we are done with stuff that needed to keep going even if backgrounded [[UIApplication sharedApplication] endBackgroundTask:taskId]; 

对不起,我是不正确的,正如在评论中指出的,你可以延长时间限制,你必须执行一次操作/之前你的应用程序进入后台。 这是苹果官方文档

我不知道你如何处理你的数据下载。 但你可以看看ASIHTTPRequest 。 它非常简单直接,如果将编译器标志设置为-fno-objc-arc ,则可以与ARC一起工作。 有了这个,你只需要使用

 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setShouldContinueWhenAppEntersBackground:YES]; //For iOS 4.0 and up 

那是有效的。

在这里你可以看到ASIHTTPRequest是如何工作的

希望能帮助到你!