我正在通过构建应用程序来学习Android,目前正在开发Weather应用程序。
目前,用户可以输入城市并获取相关信息。我想通过允许用户为多个位置存储不同的天气预报来扩展它。
存储用户选择的最佳方法是什么? SQLLiteDatabase还是SharedPreferences?我希望即使进程被终止也能保存用户位置,因此当用户打开应用程序时,这些位置的天气仍然存在,用户无需再次重新添加它们。
答案 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这样的完整关系数据库。这将允许您以易于操作的形式存储复杂数据,并使您能够执行复杂查询,例如将所有已保存位置置于特定状态。