SQL データベースと同期するルーチンがあるアプリがあります。Wi-Fi アクセスが悪いと思われる問題がいくつかあります。
ルーチンは次のように機能します。
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 OS バージョン: 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