【问题标题】:which is the best practice to store location data on android device这是在 android 设备上存储位置数据的最佳做法
【发布时间】:2014-03-18 23:02:00
【问题描述】:

我已经构建了一个跟踪车辆位置的 Android 应用程序(Android 设备)。我的应用程序使用移动数据每 t 秒将位置和速度更新到服务器@。应用程序还监控车辆速度是否低于限速或不是。如果数据连接丢失,我的应用程序肯定无法联系服务器。此时,将位置数据存储在设备中是最佳做法。

我的计划是将数据存储在一个 xml 文件中并稍后将其更新到服务器。由于该应用程序不会更新每个位置,但只会在 19 秒或更长时间后更新,我认为这是最简单的选项。请指导我正确的道路,如果我错了。而且我不知道如何将一堆数据从 xml 更新到服务器。

我目前的位置保存策略是: 通过传递位置和其他相关数据在服务器上调用 php 页面(asyncTask)。 但是如果我有一堆数据,我将如何实现!

【问题讨论】:

    标签: android xml location


    【解决方案1】:

    您可以以任何格式存储数据:SQLite 或带有 XML/JSON/CSV 的文本文件。但就我个人而言,我会将其存储在 SQLite 中。原因如下。您可以创建两个并行任务,其中一个将数据收集到 SQLite 数据库中,另一个在可能的情况下将这些数据异步发送到服务器。 SQLite 比文本文件组织起来更方便,因为您总是使用记录。

    关于向服务器发送一堆数据。您可以在 HTTP POST 请求的 BODY 中将数据作为 JSON 发送。然后在服务器上,您应该读取这些数据并在一条 SQL 语句中将其保存到服务器数据库中。这绝对是可能的,它被称为批量 INSERT 语句。

    这是在 HTTP POST 请求的 BODY 中发送 JSON 数据的示例:

    HttpPost httpPost = new HttpPost(urlString);
    String bodyJsonString = this.getBodyJsonString();
    httpPost.setEntity(new StringEntity(bodyJsonString, HTTP.UTF_8));
    
    @Override
    String getBodyJsonString() {
        JSONObject jsonObject = new JSONObject();
    
        try {
            jsonObject.put("text", this.message);
            jsonObject.put("theme", this.theme);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    
        String resultString = jsonObject.toString();
        Log.v(Helper.TAG, "resultString = " + resultString);
    
        return resultString;
    }
    

    【讨论】:

    • 你个人建议我使用 sqlite db?
    • 很好.. 我尊重您的声誉并接受此作为答案。感谢您的帮助。
    • 文本文件与 SQLite 相比也很慢。由于存储数据的数据结构是字符串。例如,如果您有一个像“234 345 656 2 3425 234”这样的字符串,并且想查找是否存在 345,那么与将这些记录组织在数据库表中的情况相比,它会非常慢,因为在那里,它们被排列成类似于二叉树数据结构的东西,其复杂度为 O(log(2)(n)),但线性搜索的复杂度为 O(n)。
    【解决方案2】:

    如果你有很多信息,我认为你应该建立一个本地数据库。

    http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

    【讨论】:

      【解决方案3】:

      我认为 nosql 是使用它的好方法。

      在 github 上获取它:

      couchbase lite on android

      【讨论】:

      • 但是在 couchbase 中,数据是同步到 couchbase 服务器的。对吧?
      • @Shan ya 当然...如果您打算将您的程序推向市场,那么创建客户端-服务器架构是正常的做法。但是第一次使用 sqlite 创建本地数据库更加简单,正如其他 cmets 中所解释的那样
      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2011-04-25
      相关资源
      最近更新 更多