Я создал простое приложение, которое каждые несколько секунд считывает данные о местоположении (широта, долгота, скорость, высота), используя GooglApiClient
. Я хотел бы записать данные, чтобы я мог рассчитать и показать: расстояние, среднюю скорость, минимальную и максимальную высоту, трассировку на карте и т. Д. В режиме реального времени для пользователя. Какой метод хранения данных будет наилучшим для этой цели? Я не хочу видеть реализацию этого метода от вас, просто хочу знать, какой метод будет лучшим. Я думал о базе данных sqLite, но не слишком медленный и энергопотребляющий для непрерывных операций чтения-записи.Как хранить данные для данных о постоянном местоположении
ответ
Чтобы ответить на ваш вопрос, я думаю, вам нужно знать больше о том, сколько данных вы собираетесь записывать (как долго вы отслеживаете), что вам нужно делать с данными (все удаленные или отправленные на серверы и т. Д.).) и какие устройства вы нацеливаете. Я думаю, что ваши два варианта: Sqlite или сохранение в виде файла. Обе эти опции должны быть точными с точки зрения мощности и скорости, основной проблемой будет доступ к датчику GPS, а не запись в db или файл.
Если вы решили записать файл, есть не менее 3 (и есть еще много) полезных форматов, которые вы можете передать в файл, о котором вы должны знать. К ним относятся:
GPS Exchange Format это открытый стандарт, используемый многими коммерческими GPS-и спутниковой навигации приложений, который используется для описания путевых точек, треков и маршрутов
Geography Markup Language, который является открытым стандартом XML для выражения географических особенностей которой понимается почти все приложения ГИС
GeoJSON, который является стандартом для описания географических объектов в json, который легко визуализировать в веб-браузере.
Если вам нужно, вы можете легко сериализовать из набора данных Sqlite для этих файлов fomats для обмена данными. Одна вещь о потоковой передаче файлов на устройствах Android. Однако вы пишете файл-автору, он может быть произвольно уничтожен ОС из-за условий памяти или приоритетов пользователя. Это может означать, что вы закончите с неверными файлами с потоками, которые не закрыты. Это гораздо менее вероятно, если вы пишете таблицы данных.
Я думаю, что sqlite достаточно хорош для хранения данных о местоположении каждые несколько секунд. Вы также можете буферизовать данные в памяти в течение короткого времени и записывать их в sqlite один раз для уменьшения операций ввода-вывода.
Есть четыре способа хранения данных в Android, которые я знаю:
- таблиц SQLite.
- Общие предпочтения (по сути, пары ключ-значение).
- Создание
File
в зоне хранения. - Сериализация объекта на
String
и сохранение его как пары ключ-значение.
Для вашей цели я бы сказал, что лучший способ - создать таблицы SQLite. Скажем, что ваш собственный объект Location
держит latitude
и longitude
, между прочим. Поэтому, если эти объекты Location
преобразуются в строки в таблице, тогда можно легко получить все столбцы этих двух типов данных, то есть все данные позиции для каждого из сохраненных объектов Location
.
Использование базы данных SQLite может быть самым простым и безопасным способом хранения данных местоположения, но вы должны знать, что запись в базу данных выполняет операции чтения.
Перед изменением базы данных, автор неявно приобретает эксклюзивную блокировку на базу данных, которая не позволяет читателям получить доступ к базы данных, пока запись не будет завершена.
По этой причине непрерывная запись в базу данных может вызвать проблемы и повлиять на производительность вашего приложения.
Вы можете избежать этих проблем с помощью , позволяя вести запись с записью, которая позволяет читать одновременно.
Подробнее на:
Принимая во внимание контекст вашей задачи, я бы не прилипают к SQLite Android. Поскольку вы используете только кучу примитивов, а не набор полностью заложенных POJO, разворачивание помощника базы данных SQLite, определение схемы и обработка запросов - довольно большие накладные расходы.
Я бы порекомендовал посмотреть библиотеку SnappyDb, которая представляет собой базу данных с ключом.
Либо вы можете иметь дело с каждым из ваших примитивных значений отдельно или обернуть их в POJO, SnappyDB может обрабатывать оба случая. Если вы выбираете первый способ, есть удобные методы для запроса нескольких ключей: keys search.
Кроме того, SnappyDB намного быстрее, чем SQLite (см. Тесты на своей странице). И легко настроить, просто пару строк кода.
Надеюсь, это поможет.
- 1. Где хранить данные о местоположении приложения?
- 2. данные о местоположении для symbian
- 3. Открытые данные о местоположении?
- 4. Данные о местоположении (особенно Франция)
- 5. Запрос данных о местоположении
- 6. Получите данные о местоположении для справочной системы
- 7. Как отслеживаются пользователи для оповещений о местоположении?
- 8. Извлечь данные о местоположении изображения
- 9. PHP санировать данные о местоположении
- 10. Данные о местоположении хранилища с использованием данных ядра
- 11. Как транслировать данные о местоположении isung iBeacon?
- 12. Получить данные о местоположении из мобильного браузера
- 13. Как получить данные о местоположении для файла контекстного режима hibernate
- 14. Данные о местоположении кластеров игнорируют выбросы
- 15. Как сохранить данные о местоположении на ускорение расстояния?
- 16. Как хранить и извлекать векторные данные в постоянном магазине BlackBerry
- 17. Сохранение данных о местоположении в основных данных
- 18. Приложение iOS, которое хранит данные о местоположении
- 19. Невозможно получить данные о местоположении в monodroid
- 20. Данные о местоположении в Spark Streaming
- 21. Моделирование данных о местоположении времени в Mongo
- 22. Просит ли Admob данные о местоположении?
- 23. Получить данные о местоположении с помощью WiFi
- 24. Повторяющиеся данные о местоположении с CLLocation
- 25. Получение данных о местоположении iPhone в массиве
- 26. получить данные о местоположении в диапазоне
- 27. Обновление данных о местоположении Википедии через api?
- 28. провайдера сети не предоставляют данные о местоположении
- 29. Данные о местоположении процесса в фоновом режиме
- 30. Получить данные о местоположении с помощью BeautifulSoup
, где вы достигли этого? был бы признателен, если бы вы ответили :) –