Android; кэширование данных геокодирования?
-
29-09-2019 - |
Вопрос
Мое приложение делает несколько звонков getFromLocationName
от android.location.Geocoder;
Класс, это в настоящее время обрабатывается в моей деятельности, которая также отображает некоторые данные Depedant в результате этого вызова.
Это может быть довольно медленным, например, до того, как деятельность сможет загрузить его сначала, должна завершить различные вызовы, и это зависит от сетевого соединения.
Как только у меня появятся результаты, мне не нужно обновлять это (я имею в виду, как часто меняются места и координаты гео?)
Мой вопрос : Как я могу лучше избегать запроса на эти данные каждый раз, когда запускается мое приложение. Должен ли я что -то сделать с сервисом, которая загружает их всех в стартап? (Может быть довольно медленным, если он должен запросить 50+ раз). Или я должен сделать звонок, сохранить результаты в SQL, а затем запросить только в следующий раз, если я в настоящее время не буду удерживать результаты?
Решение
Если вы хотите быстро его кэшировать, я бы порекомендовал сохранить самые последние результаты в базе данных SQLite. Вы, вероятно, могли бы даже уйти с помощью Preferencemanager Для быстрого хранения, если вам не нужна база данных для чего -либо еще. Просто храните последние координаты и DateTime, затем проверьте, истек ли DateTime после X минут или x часов (если вы хотите сделать).