UIBackgroundTask没有结束

时间:2015-04-20 07:34:25

标签: ios objective-c cocoa-touch uikit uibackgroundtask

我正在使用UIBackgroundtaskIdentifier来创建将图像上传到服务器的后台任务。

NSLog(@"Time left = %.1f seconds", [UIApplication sharedApplication].backgroundTimeRemaining);

当我将应用程序带到后台时,它显示应用程序有179秒在后台运行。我在逐个上传图片时记录服务器响应。

    [[DataCoordinator sharedInstance] setBackgroundTask:[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        NSLog(@"No background task should run now.");
        [[UIApplication sharedApplication] endBackgroundTask:[[DataCoordinator sharedInstance] backgroundTask]];
        [[DataCoordinator sharedInstance] setBackgroundTask:UIBackgroundTaskInvalid];
    }]];

这里发生的奇怪的事情是,在iOS提供的应用程序在后台运行的时间结束后,上传仍然没有停止。假设我尝试上传33张图片,当179秒完成申请时,成功上传33张图片中的9张。但这个过程并没有停止。应用程序继续上传剩余的图片。

1 个答案:

答案 0 :(得分:0)

你不应该依赖backgroundTimeRemaining。 Apple说,当你在后台运行应用程序时,app可能会被杀死:

  

此属性包含应用必须在其中运行的时间   它可能被系统强行杀死之前的背景。

实际上你可以有几秒或5分钟,这取决于许多事情,如电池寿命,内存使用等。 无论backgroundTimeRemaining显示什么,您都必须对应用程序进行编程以做正确的事情。