Как мне решить, какой интервал использовать для requestLocationUpdates? - PullRequest
9 голосов
/ 22 июня 2011

LocationManager#requestLocationUpdates позволяет передавать параметры minTime и minDistance.Я с трудом решаю, какими должны быть эти цифры, и могу оценить некоторые рекомендации.

Наше приложение не является пошаговым навигационным приложением;Я просто хочу показать 10 ближайших достопримечательностей.Поскольку я показываю 10 ближайших, они могут немного устареть, но если пользователь находится в движущемся транспортном средстве, я бы хотел / нужно обновлять их довольно часто, чтобы избежать устаревания.Многие люди находятся в одинаковом положении с неопределенными требованиями: «Я не хочу, чтобы данные были слишком устаревшими, но я не хочу тратить батарею».Как я могу превратить эти смутные требования в конкретные цифры?

Ответы [ 4 ]

3 голосов
/ 22 июня 2011

Это было хорошо описано в requestLocationUpdates документах

Частота уведомлений или новых места можно контролировать с помощью Параметры minTime и minDistance. Если minTime больше 0, LocationManager потенциально может отдохнуть в течение минимального времени между миллисекундами Обновление местоположения для экономии энергии. Если minDistance больше 0, а будет транслироваться только в том случае, если устройство движется по счетчикам minDistance. к получать уведомления так часто, как возможно, установите оба параметра на 0. Фоновые услуги должны быть осторожными о настройке достаточно высокой minTime, чтобы устройство не потреблять слишком много энергии, сохраняя GPS или беспроводные радиоприемники на всех время. В частности, значения под 60000мс не рекомендуется.

3 голосов
/ 22 июня 2011
***<Edit>***
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location.
***</Edit>***

Исходя из вашей проблемы, мне кажется, что параметр minTime не имеет значения.

Что вам действительно нужно беспокоиться, так это minDistance, так что, если пользователь находится в быстро движущемся транспортном средстве, он будет не отставать.

Если человек движется со скоростью 60 миль в час, он движется со скоростью около 27 метров в секунду.

Учитывая этот критерий ... Я бы сказал, использовать:

minTime = 60000 // обновлять каждые 60 секунд
minDistance = 90 // в быстро движущемся транспортном средстве обновляется примерно каждые 3 секунды

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

Я могу предложить лучшую идею: сначала запрашивать обновления с немного большим интервалом и получать местоположения.Теперь проверьте, больше ли расстояние между последовательными местоположениями, чем минимальное расстояние, чтобы различить более близкие местоположения, измените интервал обновления вашего запроса на меньшее значение.Аналогично, если в этом более низком интервале расстояние, которое вы вычислили, намного меньше, что указывает на то, что пользователь не проезжает через транспортное средство, тогда обновите интервал до большего значения.Для обновления интервала необходимо отменить регистрацию предыдущего слушателя, а затем заново зарегистрировать его с новым значением.

0 голосов
/ 22 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...