Поведение жизненного цикла приложения iOS 4 стандартной службы определения местоположения, работающей в фоновом режиме - PullRequest
2 голосов
/ 09 июня 2011

Я работаю над приложением отслеживания местоположения, которое использует как стандартную службу определения местоположения, так и службу определения существенных изменений в фоновом режиме (мое приложение зарегистрировано для фоновых обновлений местоположения в iOS 4+) в зависимости от обстоятельств. Благодаря этому вопросу у меня есть четкое понимание того, насколько значительные изменения возвращаются из фонового состояния и перезапускаются из завершенного состояния. Тем не менее, мне все еще не ясно, как ведет себя стандартная служба определения местоположения в этих случаях. Может ли кто-нибудь нарушить точное поведение стандартной службы определения местоположения, работающей в фоновом режиме?
В частности:

  1. Как ведет себя стандартная служба определения местоположения, когда вы оставляете ее запущенной и приложение переводится в фоновый режим? Из моего собственного тестирования я видел, что он будет продолжать просыпаться для получения обратных вызовов на locationManager:didUpdateToLocation:fromLocation: (он у меня отправляет местоположение из сокета, и я вижу его в сети). Есть ли ограничение времени или памяти для обработки этого обратного вызова?
  2. Продолжает ли работать стандартная служба определения местоположения даже после завершения работы моего приложения? То есть, будет ли когда-нибудь снова запускаться с application:didFinishLaunchingWithOptions: с UIApplicationLaunchOptionsLocationKey, как это делает служба значительных изменений? Я предполагаю, что CLLocationManager также необходимо будет перезапустить в этом случае, как это делает служба существенных изменений.

Спасибо.

1 Ответ

3 голосов
/ 02 августа 2011

Ответьте на вопросы 1 и 2. Если вы зарегистрировали свое приложение как фоновое местоположение, то ваше приложение не завершает работу и продолжает работать в фоновом режиме, пока вы не сделаете это:

[locationManager stopUpdatingLocation];

Итак,нет ограничения по времени или памяти, но есть ограничение по батарее.Если ваша батарея разряжена, все приложения, использующие GPS, будут закрыты.Поскольку ваше приложение не прекращает работу в нормальных условиях, оно либо не требуется, либо не перезапускается (после прекращения работы от батареи) с UIApplicationLaunchOptionsLocationKey

Стандартные и важные службы отличаются таким образом, что значительнымиприложение активируется, когда происходит обновление местоположения, но стандартное приложение работает непрерывно и, следовательно, разряжает батарею.

Прежде чем выбрать какую службу использовать, ознакомьтесь с руководством по программированию Location-Awareness.

...