Как startMonitoringSignificantLocationChanges и startUpdatingLocation влияют друг на друга?

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

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

Ответ 1

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

locationManager: didUpdateToLocation: fromLocation

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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