在iOS4下继续在后台运行一个长时间的过程

时间:2011-06-21 19:17:50

标签: ios

我有一个使用ASIHTTP请求运行的上传队列。当用户按下主屏幕并且应用程序进入后台时,我希望此操作继续。从文档中我可以看到我如何调用一个新任务可以调用在后台运行,但是不能完全看到我将如何标记已经运行的任务继续。

1 个答案:

答案 0 :(得分:2)

此示例包含在4.0之前的兼容性中:

UIApplication *app = [UIApplication sharedApplication];
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
    backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        dispatch_async(dispatch_get_main_queue(), ^{
            if (backgroundTaskIdentifier != UIBackgroundTaskInvalid)
            {
                // you took too long - clean up what you can, then …
                [app endBackgroundTask:backgroundTaskIdentifier];
                backgroundTaskIdentifier = UIBackgroundTaskInvalid;
            }
        });
    }];
}

// start HTTP request …

完成流程后,您应致电endBackgroundTask:让应用知道