Локальный сервисный индикатор остается включенным - PullRequest
8 голосов
/ 02 февраля 2011

У меня есть небольшое приложение, которое использует службы определения местоположения на iPhone. Все работает хорошо, за исключением того факта, что иногда маленькая стрелка в информационной панели остается активной, даже если я явно убиваю приложение. Я использую фоновый режим для сервисов определения местоположения, таким образом, методы appDelegate applicationWillResignActive, applicationDidEnterBackground, applicationWillEnterForeground и applicationDidBecomeActive реализованы, но не затрагивают сервисы определения местоположения (хорошо - они мне нужны в фоновом режиме).

В этой конфигурации applicationWillTerminate никогда не вызывается; Я реализовал всю очистку как stopUpdatingLocation в dealloc, так как я не нашел другого подходящего для этого места. Но все же - индикатор остается включенным.

Есть идеи?

Ответы [ 4 ]

13 голосов
/ 11 мая 2011

У меня была та же проблема - приложение, оставляющее индикатор местоположения включенным в строке состояния.

Моя проблема оказалась в том, что я первоначально вызвал метод 'startMonitoringSignificantLocationChanges' для мышления CCLocationManager, который дал бы приблизительное местоположениеинформация о том, что я могу повысить разрешение, когда мне действительно это нужно.

К сожалению, если приложение однажды вызвало этот метод, даже если вы удалите приложение и переустановите его, оно всегда будет снова отображать значокв строке состояния до тех пор, пока приложение не вызовет «stopMonitoringSignificantLocationChanges» в CCLocationManager, чтобы отменить регистрацию в системе - полная боль, так как я должен оставить этот код, пока он не разобрался с несколькими людьми, которые тестировали мое приложение для меня.

Так что, если вы привязываете этот значок к своему приложению, убедитесь, что вы сопоставили любые вызовы startMonitoringSignificantLocationChanges со стоп-вызовом.

3 голосов
/ 02 февраля 2011

, если вы начали работу с менеджером местоположения с

[MyLocationManagerInstance startMonitoringForSignificantLocationChanges];

тогда вам нужно остановить его:

[MyLocationManagerInstance stopMonitoringForSignificantLocationChanges];

Если принудительно завершить работу приложения, applicationWillTerminate не вызывается, так как для точки зрения ОС оно выглядит как SIGKILL.

1 голос
/ 08 июня 2011

Я встретил похожую проблему.Проблема возникает только на iPhone4, но отлично работает на моем 3GS.Изучив мой код, я обнаружил, что в своем методе startUpdatingLocation я использовал службы startUpdatingLocation и startMonitoringForRegion, однако в своем методе stopUpdatingLocation я просто прекращаю службу updateLocation.Я исправил эту проблему, отключив MonitoringForRegion.

#pragma mark -
#pragma mark Location methods
- (void)startUpdatingLocation
{

    [self.locationManager startUpdatingLocation];

    [self.locationManager startMonitoringForRegion:desRegion desiredAccuracy:50.0f];
}

- (void)stopUpdatingLocation
{
    [self.locationManager stopUpdatingLocation];

        //  !!!: fix location service indicator stuck issue
    [self.locationManager stopMonitoringForRegion:desRegion];
}
0 голосов
/ 19 марта 2011

Хорошо, проблема решена. Индикатор будет гореть, пока не будет найдено новое местоположение. Затем, если все остальное правильно, индикатор выключается.

...