这是在Android设备上存储位置数据的最佳实践

时间:2014-03-18 13:54:33

标签: android xml location

我已经构建了一个跟踪车辆位置的Android应用程序(Android设备)。我的应用程序使用移动数据每隔t秒更新服务器的位置和速度.App还监控速度限制下的车速或没有。如果数据连接丢失,我的应用程序将无法联系服务器。此时,这是将位置数据存储在设备中的最佳实践。

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

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

3 个答案:

答案 0 :(得分:1)

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

关于向服务器发送一串数据。您可以将数据作为JSON发送到HTTP POST请求的BODY中。然后在服务器上,您应该读取此数据并将其保存到一个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;
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

在github上获取它:

couchbase lite on android

相关问题