【问题标题】:How to store data for continous location data如何存储连续位置数据的数据
【发布时间】:2015-03-08 11:21:04
【问题描述】:

我创建了一个简单的应用程序,它使用GooglApiClient 每隔几秒读取一次位置数据(纬度、经度、速度、高度)。我想记录数据,以便能够实时计算并向用户显示:距离、平均速度、最小和最大高度、地图上的轨迹等。哪种数据存储方法最适合此目的?我不想从你那里看到这个方法的实现,只想知道哪种方法最好。我正在考虑使用 sqLite 数据库,但是对于连续的读写操作来说,它是不是太慢且太耗电了。

【问题讨论】:

  • 你在哪里接触到这个?如果您回复将不胜感激:)

标签: android android-sqlite android-location


【解决方案1】:

据我所知,在 Android 中有四种存储数据的方法:

  • SQLite 表。
  • 共享首选项(本质上是键值对)。
  • 在存储区创建File
  • 将对象序列化为 String 并将其存储为键值对。

出于您的目的,我想说最好的方法是创建 SQLite 表。假设您的自定义 Location 对象包含 latitudelongitude 等。因此,如果将这些Location 对象转换为表中的行,那么您就可以轻松地检索这两种数据类型的整列,即存储的每个Location 对象的所有位置数据。

【讨论】:

    【解决方案2】:

    要回答您的问题,我认为您需要更多地了解您将记录多少数据(您要跟踪多长时间)您需要对数据做什么(所有远程或发布到服务器等)以及您针对的是哪种设备。我认为您的两个选项是 Sqlite 或存储为文件。从功率和速度的角度来看,这两个选项都应该没问题,主要的功率问题是您访问 GPS 传感器,而不是写入数据库或文件。

    如果您选择写入文件,则至少有 3 种(并且还有更多)有用的格式可以将文件流式传输到您应该注意的格式。它们是:

    GPS Exchange Format 这是许多商业 GPS 和卫星导航应用程序使用的开放标准,用于描述航路点、轨迹和路线

    Geography Markup Language 是一个开放的 xml 标准,用于表达几乎所有 GIS 应用程序都可以理解的地理特征

    GeoJSON 是一种用 json 描述地理特征的标准,然后很容易在网络浏览器中呈现。

    如果您需要,您可以轻松地从 Sqlite 数据集序列化为这些文件格式以进行数据交换。关于流式传输到 Android 设备上的文件的一件事。无论您如何编写文件编写器,由于内存条件或用户优先级,它可能会被操作系统任意破坏。这很可能意味着您最终会得到流未关闭的格式错误的文件。如果您正在写入数据表,则发生这种情况的可能性要小得多。

    【讨论】:

      【解决方案3】:

      我认为 sqLite 足以让您每隔几秒钟存储一次位置数据。也可以在内存中短暂缓冲数据,一次性写入sqlite,减少I/O操作。

      【讨论】:

        【解决方案4】:

        使用 SQLite 数据库可能是存储位置数据的最简单和最安全的方式,但您必须注意,写入数据库会阻止读取操作。

        在修改数据库之前,写入者隐式获取一个 数据库上的排他锁,阻止读者访问 数据库,直到写入完成。

        因此,连续写入数据库可能会导致问题并影响应用程序的性能。

        您可以通过启用预写日志记录来避免这些问题,该日志记录允许同时进行读取。

        阅读更多:

        【讨论】:

          【解决方案5】:

          考虑到您的任务上下文,我不会坚持使用 Android 的 SQLite。由于您只使用一堆原语而不是一组完全承诺的 POJO,因此启动 SQLite 的数据库助手、定义模式和处理查询是相当大的开销。

          我建议查看SnappyDb 库,它是键值数据库。

          您可以单独处理每个原始值,也可以将它们包装到 POJO 中,SnappyDB 可以处理这两种情况。如果选择第一种方式,有很方便的方法可以查询多个key:keys search

          此外,SnappyDB 比 SQLite 快得多(请参阅他们页面上的基准测试)。并且易于设置,只需几行代码。

          希望对你有帮助。

          【讨论】:

            猜你喜欢
            • 2022-11-07
            • 2014-07-14
            • 1970-01-01
            • 1970-01-01
            • 2016-03-13
            • 2021-02-09
            • 2014-05-25
            • 2019-03-09
            • 2012-06-08
            相关资源
            最近更新 更多