当应用程序转到后台时,继续运行NSOperationQueue

时间:2012-12-13 09:49:18

标签: ios multithreading grand-central-dispatch nsoperation nsoperationqueue

我正在使用NSOperation下载文件并添加NSOperationQueue。当应用程序进入后台时,NSOperationQueue将被暂停。如果队列不在后台暂停并开始下一个操作,是否有任何解决方法?

2 个答案:

答案 0 :(得分:6)

在您的队列运行时,使用UIApplication beginBackgroundTaskWithExpirationHandler调用启动后台任务,以保持您的下载运行。

我通常用自己的beginBackgroundTaskWithExpirationHandler调用包装每个操作,然后在我调用endBackgroundTask之前将下一个操作排队,直到队列继续运行。

note 个人后台任务仅限10分钟的操作,之后iOS将暂停该应用。

答案 1 :(得分:0)

-(void)applicationDidEnterBackground:(UIApplication *)application {

    __block UIBackgroundTaskIdentifier task = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:task];
        task = UIBackgroundTaskInvalid;
    }];

}