Objective c 锁屏中断连接
我想知道当用户锁定和解锁iPad屏幕时,幕后发生了什么。我有一个应用程序使用NSURLConnection下载文件,下载失败时出现SOAP错误(“找不到具有指定主机名的服务器”),但不是在用户锁定屏幕时,而是在用户解锁屏幕时。 不管错误何时出现,下载永远不会完成。你知道为什么吗?你能做些什么Objective c 锁屏中断连接,objective-c,ios,nsurlconnection,nsurlrequest,Objective C,Ios,Nsurlconnection,Nsurlrequest,我想知道当用户锁定和解锁iPad屏幕时,幕后发生了什么。我有一个应用程序使用NSURLConnection下载文件,下载失败时出现SOAP错误(“找不到具有指定主机名的服务器”),但不是在用户锁定屏幕时,而是在用户解锁屏幕时。 不管错误何时出现,下载永远不会完成。你知道为什么吗?你能做些什么 NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProto
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:300];
NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest: request delegate: self];
据我所知,当我按下主页按钮时,我得到:
applicationWillResignActive
applicationDidEnterBackground
三分钟后我回忆起应用程序后,我得到:
applicationWillEnterForeground
下载要么已经完成,要么已经在后台进行了
当我把它留在后台更长时间(5分钟)时,它会超时并出现错误
当我锁定屏幕时,我会得到相同的应用程序状态顺序,但也会收到一条关于下载断开连接的错误消息
谢谢大家! 我猜你的连接断开了,因为当应用程序进入后台时,它正在运行,而你没有正确的实现来保持它运行。也许你应该看看苹果的文档。它将向你展示如何让你的应用程序在后台运行10分钟而不被终止。查找以下示例代码并了解它如何解决您的问题:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Clean up any unfinished task business by marking where you.
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
我正在寻找一个优雅的解决方案来解决这个问题-最好是一个不涉及取消连接。谢谢。这看起来很有希望。为什么要马上回来?如果是这样,你将如何继续连接互联网?@yeesterbunny如何使用这种方法?我需要在我想在后台工作的应用程序部分使用此任务?