【发布时间】:2013-10-11 10:18:53
【问题描述】:
在 ping 服务器之前,我已使用以下代码向我的应用程序添加后台进程支持:
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
if (!connection) {
connection = [[NSURLConnection alloc] init];
}
(void)[connection initWithRequest:originalRequest delegate:self];
由于这段代码,如果我将应用程序保持在后台模式超过 10 分钟,它就会崩溃。根据我的理解,我不应该让任务在后台连续运行,我应该为每个任务设置一些时间间隔。但我不知道如何设置杀死他们的时间间隔。
请建议我一些步骤来解决这个问题。
【问题讨论】:
-
实际上不能将过期时间设置为一些离散值。它由 iOS 管理。 IOS 将在到期后自行停止您的后台任务。如果我是对的,那是 iOS7 前 10 分钟,iOS7 前 3 分钟。而且您永远不应该尝试手动杀死您的应用程序。你的应用程序是如何崩溃的?你的意思是它会重新启动?请参阅此处了解更多信息:stackoverflow.com/questions/18247808/…
-
我启动应用程序并单击主页按钮,当我尝试在 10 分钟后重新启动应用程序时,它会从第一个屏幕开始
-
在 NSURLRequest 中设置请求的超时时间。假设它不是一个足够大的文件。如果您需要长时间下载,请查看 iOS 7 中的后台传输。添加到后台会话的任务在外部进程中运行,即使您的应用被挂起、崩溃或被终止,也会继续运行。
-
我也添加了。 80 秒。
标签: iphone ios ipad cocoa-touch nsurlconnection