存储天气应用程序数据的最佳方法

时间:2013-06-01 21:34:47

标签: android database data-storage

我正在通过构建应用程序来学习Android,目前正在开发Weather应用程序。

目前,用户可以输入城市并获取相关信息。我想通过允许用户为多个位置存储不同的天气预报来扩展它。

存储用户选择的最佳方法是什么? SQLLiteDatabase还是SharedPreferences?我希望即使进程被终止也能保存用户位置,因此当用户打开应用程序时,这些位置的天气仍然存在,用户无需再次重新添加它们。

2 个答案:

答案 0 :(得分:0)

如果您只是存储位置,我建议使用SharedPreferences,数据库似乎有点矫枉过正。只需存储这样的位置

prefs =  getSharedPreferences("your package name, Context.MODE_PRIVATE);//creates shared prefs
    String[] locations = .... 
    int number = locations.length;
    SharedPreferences.Editor edit = prefs.edit();
    edit.putInt("numberOfLoactions", number);
    for (int i = 0; i < number; i++){
        edit.putString("location"+Integer.toString(i), locations[i]);
    }
    edit.commit();

让他们像这样

    locations = new String[prefs.getInt("numberOfLocations");
for (int i = 0; i<locations.length; i++){
    locations[i] = prefs.getString("location" + Integer.toString(i), "error");
}

答案 1 :(得分:0)

答案取决于您要保存的位置的数据类型。如果它只是一对,例如将城市名称与唯一标识符匹配,那么SharedPreferences就足够了。但是,如果您希望存储有关位置(州,城市,邮政编码,纬度,经度等)的更多信息,您将需要考虑使用像SQLite这样的完整关系数据库。这将允许您以易于操作的形式存储复杂数据,并使您能够执行复杂查询,例如将所有已保存位置置于特定状态。