我有一个应用程序,其中有一个与我们的 SQL 数据库同步的例程。我遇到了一些似乎很差的 wifi 访问的问题。
例程是这样工作的:
1 - 按下 UIButton
2 - 检查互联网连接,如果有连接....
3 - 启动一个新线程以显示“正在加载”动画 gif
4 - 加载下一页。
if([self connectedToInternet] == YES)
{
[NSThread detachNewThreadSelector:@selector(loadAnimation) toTarget:self withObject:nil];
ObViewControllerAdminMenu *monitorMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"webObservations"];
monitorMenuViewController.modalTransitionStyle = IModalTransitionStyleCrossDissolve;
[self presentViewController:monitorMenuViewController animated:YES completion:nil];
}
然后,使用 webObservations 页面中的 viewDidLoad 方法,我开始连接到 SQL 数据库。
我的问题是,如果在同步过程中互联网连接中断,会发生什么情况?在我看来,该应用程序“超时”并且由于缺乏响应而自行关闭。
我认为我说 iPad 在 5 秒不活动后执行此操作是正确的 - 这是正确的吗?如果是这样,有什么方法可以解决它?
如果有帮助,下面的同步代码片段如下:
- (void)viewDidLoad
{
NSString *strURLClass = [NSString stringWithFormat:@"%@%@", @"http://www.website.co.uk/uploads/getiobserveinfo.php?schoolname=",obsSchoolName];
NSArray *observationsArrayClass = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:strURLClass]];
NSEnumerator *enumForObsClass = [observationsArrayClass objectEnumerator];
observationListFromSQL = [[NSMutableArray alloc]init];
id className, dateOfObs, teacher, startTime;
while (className = [enumForObsClass nextObject])
{
[observationListFromSQL addObject:[NSDictionary dictionaryWithObjectsAndKeys:className, @"obsClassName", nil]];
}
从崩溃日志 - 请注意,它也在启动时运行例程
日期/时间:2013-09-20 11:56:31.731 +0300 操作系统版本:iOS 6.1.3 (10B329) 报告版本:104
异常类型:00000020 异常代码:0x000000008badf00d 突出显示的线程:0
应用程序特定信息:uk.co.website 未能及时启动
已用总 CPU 时间(秒):2.080(用户 2.080,系统 0.000),5% CPU 已用应用程序 CPU 时间(秒):0.312,1% CPU