2012-06-26 3 views
10

Что произойдет, если я позвоню startUpdatingLocation, пока работает startMonitoringSignificantLocationChanges? Выполняется ли мониторинг значительного управления местоположением? Если я тогда stopUpdatingLocation будет значительным Мониторинг местоположенияМеждународный мониторинг продолжить или перезапустить?Как startMonitoringSignificantLocationChanges и startUpdatingLocation влияют друг на друга?

Я не могу найти документацию, охватывающую взаимодействие между этими двумя способами контроля местоположения.

+0

Эй, вы нашли более подробную информацию об этом? Особенно часть взаимодействия. IOS перестает работать, если другой запускается? – Philiiiiiipp

+0

Знаете ли вы, можете ли вы запустить startUpdatingLocation после получения «startMonitoringSignificantLocationChanges» в backgroundState? – Honey

+0

Извините, но я не использовал этот API уже много лет. Почему бы вам не задать новый вопрос? – Undistraction

ответ

3

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

locationManager: didUpdateToLocation: fromLocation

Они отличаются по частоте и точности (и аппаратными средствами расширения, используемого и потреблением энергии) изменений. Вы, как разработчик, должны решить, какой из них лучше всего использовать на вашем примере использования.

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

+1

Спасибо. Это именно то, что я делаю в данный момент. Я завернул CLLocationService своей собственной службой, и я использую это, чтобы установить флаги для типа используемых служб. Меня просто интересовало, как они взаимодействуют. Интересно, насколько полностью Apple не обращает внимания на этот вопрос. – Undistraction

+1

В последних документах Apple упоминает, что их можно запускать одновременно, но не дает никаких подробностей о взаимодействии. «Если обе службы определения местоположения включены одновременно, они доставляют события с использованием одного и того же набора методов делегатов». https://developer.apple.com/reference/corelocation/cllocationmanager –

14

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

Почему кто-то хочет использовать оба варианта? Потому что startMonitoringSignificantLocationChanges пробуждает приложение от приостановки или прекращения без необходимости каких-либо фоновых режимов. Поэтому, если вы запустите оба, вы можете получить точные обновления местоположения на переднем плане и значительные изменения местоположения фона.

Конечно, вы можете переключить метод, при переходе в фоновый режим, но а), что не был вопрос б) он добавляет Ненужные логику

Конечно, есть вопрос, если работает оба метода высасывает больше батареи, но моя ставка заключается в том, что это не так.

1

Служба стандартного местоположения и служба значительного изменения местоположения могут использоваться вместе. Цитата the API Reference:

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

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

Смежные вопросы