gpt4 book ai didi

objective-c - 锁屏中断 NSURLConnection

转载 作者:可可西里 更新时间:2023-11-01 03:52:34 24 4
gpt4 key购买 nike

我想知道当用户锁定和解锁 iPad 屏幕时幕后发生了什么。我有一个使用 NSURLConnection 下载文件的应用程序,下载失败并出现 SOAP 错误(“找不到具有指定主机名的服务器”),但不是在用户锁定屏幕时,而是在解锁屏幕时。无论何时弹出错误,下载都不会完成。有什么想法是为什么以及可以做什么吗?

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:300];

NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest: request delegate: self];

据我所知,当我按下主页按钮时,我得到:

applicationWillResignActive
applicationDidEnterBackground

三分钟后我记忆起该应用程序后,我得到:

applicationWillEnterForeground

而且下载要么已经完成,要么甚至在后台进行。

当我将它留在后台的时间更长(5 分钟)时,它会超时并出现错误。

当我锁定屏幕时,我会看到相同顺序的应用程序状态,但也会看到有关下载断开连接的错误消息。

谢谢!

最佳答案

我的猜测是您的连接正在断开,因为它在应用程序进入后台时正在运行,而您没有正确的实现来保持它的运行。也许你应该看看 Apple 的 Background Execution and Multitasking文档。它将向您展示如何让您的应用程序在后台运行最多约 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;
});
}

关于objective-c - 锁屏中断 NSURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13258408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com