Принудительное обновление CLLocationManager - это помогает или мешает? - PullRequest
5 голосов
/ 18 апреля 2010

Я пытался найти какой-либо способ оптимизировать производительность моего приложения iPhone на основе определения местоположения и видел, как некоторые люди упоминали, что вы можете принудительно обновлять местоположение, запуская и останавливая свой CLLocationManager. Мне нужна максимальная точность, которую я могу получить, и пользователь в моем случае, вероятно, хотел бы видеть обновления каждые несколько секунд (скажем, 10 секунд), пока они ходят. Я настроил фильтры соответствующим образом, но заметил, что иногда я не получаю никаких обновлений на устройстве в течение достаточно долгого времени.

Я тестирую следующий подход, который вызывает обновление, когда проходит фиксированный интервал времени (я использую 20 секунд). Моя интуиция говорит мне, что это действительно не поможет мне предоставить более точные обновления пользователю, и что просто оставляя CLLocationManager постоянно запущенным, вероятно, лучший подход.

- (void)forceLocationUpdate {
    [[LocationManager locationManager] stopUpdates];
    [[LocationManager locationManager] startUpdates];
    [self performSelector:@selector(forceLocationUpdate) withObject:nil afterDelay:20.0];
}

Мой вопрос таков: действительно ли принудительное обновление из CLLocationManager улучшает производительность ядра? Вредит ли это производительности? Если я нахожусь на улице в открытом поле с хорошим приемом GPS, тогда это поможет? У кого-нибудь есть опыт этого?

Спасибо заранее, Стив

Ответы [ 2 ]

0 голосов
/ 11 ноября 2012

Скорее всего, если вы правильно настроили желаемый фильтр точности и расстояния, вы не получите никаких обновлений, потому что ваш пользователь или тест не переместились достаточно, чтобы вызвать обновление. Как сказано в комментарии @Nate, если вы установите его на best или bestForNav, у вас будет больше шансов получить больше обновлений.

Настоящая причина отключения вашего менеджера местоположения - это экономия батареи. Большинство пользователей, которые используют устройство для GPS и навигации, знают, чтобы оно было подключено. Если вы не используете местоположение для чего-то подобного, вам лучше узнать свое местоположение и выключить его, чтобы сэкономить заряд батареи, пока вам не понадобится другое обновление местоположения. , Это можно сделать с помощью таймеров или блоков. Главное подумать о том, как вы можете работать и сэкономить как можно больше батареи.

0 голосов
/ 23 апреля 2010

Я также пытаюсь оптимизировать функцию "рядом со мной" в приложении - я нашел следующую информацию о посте SO полезной: текст ссылки

...