我正在执行将位置更新发送到服务器的长时间运行任务。我每 60 秒后使用 NSTimer 调用方法。我阅读了他们使用以下代码的许多帖子。
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 吗?如果是,那么为什么?
有些人使用两个标识符,一个用于计时器,另一个用于任务。
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
bgTask1 = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask1];
bgTask1 = UIBackgroundTaskInvalid;
}];
我们是否需要初始化两个 UIBackgroundTaksIndentifier 或者一个就可以解决问题?
谢谢