サーバーに送信する位置更新の長時間実行タスクを実装しています。NSTimer を使用して、60 秒ごとにメソッドを呼び出しています。次のコードを使用している多くの投稿を読みました。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.timerLocationUpdateToServer = [NSTimer timerWithTimeInterval:interval
target:self
selector:@selector(retryLocationUpdateToServer)
userInfo:nil
repeats:YES];
dispatch_async(dispatch_get_main_queue(), ^{
[[NSRunLoop mainRunLoop] addTimer:self.timerLocationUpdateToServer forMode:NSDefaultRunLoopMode];
});
});
本当に dispatch_async を使用する必要がありますか? はいの場合、なぜですか?
1 つはタイマー用、もう 1 つはタスク用の 2 つの識別子を使用するものもありました。
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
bgTask1 = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask1];
bgTask1 = UIBackgroundTaskInvalid;
}];
2 つの UIBackgroundTaksIndentifier を初期化する必要がありますか、それとも 1 つが目的を解決しますか?
ありがとう