1

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

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

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

4

2 回答 2

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");
}
于 2013-06-01T21:53:43.527 回答
0

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

于 2013-06-02T03:24:54.363 回答