Серая стрелка GPS отображается в строке состояния, хотя CLLocationManager остановлен
Я пишу приложение на основе местоположения для iPhone. Приложение работает в фоновом режиме, поэтому я регистрирую его для фоновых обновлений. Когда приложение переходит в фоновый режим, я звоню:
- (void) enteredBackground: (NSNotification*) notification {
[self.locationManager stopUpdatingLocation];
NSLog(@"LocationManager => stopUpdatingLocation called");
[self.locationManager startMonitoringSignificantLocationChanges];
NSLog(@"LocationManager => startMonitoringSignificantLocationChanges called");
}
В AppDelegate я звоню:
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"applicationDidEnterBackground");
[[NSNotificationCenter defaultCenter] postNotificationName: @"didEnterBackground" object: nil userInfo: nil];
UIApplication *app = [UIApplication sharedApplication];
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
}
}
Когда приложение FastAppSwitcher уничтожает приложение, запускается уведомление и вызывается следующий метод:
-(void) exitApplicationFromBackground:(NSNotification *)notification{
NSLog(@"exitApplicationFromBackground called");
[self.locationManager stopMonitoringSignificantLocationChanges];
NSLog(@"LocationManager => stopMonitoringSignificantLocationChanges called");
NSLog(@"LocationManager stopped, Application will terminate...");
exit(0);
}
Я проверял это много раз. Каждый раз все NSLog записываются на консоль или при тестировании на iPhone в лог-файл. Но не каждый раз, когда серая стрелка местоположения исчезает из строки состояния, особенно при запуске приложения на iPhone.
Как это может быть? Спасибо за ваши ответы!