Tre*_*zar 6 objective-c nsurlconnection nsurlrequest ios
我想知道当用户锁定和解锁iPad屏幕时幕后发生的事情.我有一个使用NSURLConnection下载文件的应用程序,并且下载失败并出现SOAP错误("无法找到指定主机名的服务器"),但是当用户锁定屏幕时却解锁了它.无论错误弹出的事实如何,下载永远不会完成.任何想法为什么以及可以做些什么呢?
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:300];
NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest: request delegate: self];
Run Code Online (Sandbox Code Playgroud)
据我所知,当我点击Home键时,我得到:
applicationWillResignActive
applicationDidEnterBackground
Run Code Online (Sandbox Code Playgroud)
三分钟后我回忆起应用程序后,我得到:
applicationWillEnterForeground
Run Code Online (Sandbox Code Playgroud)
并且即使在后台,下载已经完成或已经进展.
当我在后台停留更长时间(5分钟)时,它会因错误而超时.
当我锁定屏幕时,我得到相同的应用程序状态顺序,但也有关于下载断开连接的错误消息.
谢谢!
我的猜测是你的连接断开了,因为当应用程序进入后台时它正在运行,你没有正确的实现来保持它的运行.也许你应该看一下Apple的后台执行和多任务文档.它将向您展示如何让您的应用程序在后台运行大约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;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |