1

Мое приложение совершает несколько звонков getFromLocationName из класса android.location.Geocoder;, которое в настоящее время обрабатывается в моей активности, а также отображает некоторые данные в зависимости от результатов этого вызова.Android; кеширование данных геокодирования?

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

После того, как у меня есть результаты, я на самом деле не нужно, чтобы обновить, что (я имею в виду, как часто делают места и географические координаты меняются?)

Мой вопрос: Как я могу лучше всего избегать того, чтобы запросить эти данные каждый раз, когда мое приложение работает. Должен ли я что-то делать с сервисом, который загружает их при запуске? (может быть довольно медленным, если он должен запрашивать более 50 раз). ИЛИ должен ли я делать вызов, хранить результаты в SQL, а затем запрашивать в следующий раз, если в настоящее время я не получаю результаты?

ответ

2

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

+0

Ну, мне не нужен SQL Lite для чего-либо еще (на данном этапе). Будет ли какая-либо компромиссная оценка эффективности, т. Е. Это быстрее, чем вручную запрашивать службу определения местоположения каждый раз? – Jimmy

+1

@James Я бы сказал, что наиболее важными факторами являются то, что 1) он локально хранится на вашем телефоне и быстро доступен для доступа 2) получение ваших координат gps займет некоторое время, чтобы gps заблокировал (или через сотовые вышки, если gps выключен). Таким образом, скорость будет быстрой, но самой большой проблемой является то, как «холодные» или устаревшие (как недавние) ваши последние GPS-координаты были. И вы все равно должны будете найти координаты в первый раз. И пользователи могут перемещаться много (если, скажем, автомобиль). Я все еще думаю, что кэширование может помочь вам (возможно, дать пользователю возможность ручной настройки GPS?) –

+0

Звучит неплохо, как насчет первоначального запроса и хранения/чтения из SQL Lite, если все они находятся в службе или безопасно оставаться в деятельности? (Просто подключившись к советам здесь) – Jimmy