我正在使用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张。但这个过程并没有停止。应用程序继续上传剩余的图片。
答案 0 :(得分:0)
你不应该依赖backgroundTimeRemaining
。
Apple说,当你在后台运行应用程序时,app可能会被杀死:
此属性包含应用必须在其中运行的时间 它可能被系统强行杀死之前的背景。
实际上你可以有几秒或5分钟,这取决于许多事情,如电池寿命,内存使用等。 无论backgroundTimeRemaining显示什么,您都必须对应用程序进行编程以做正确的事情。