我正在通过构建应用程序来学习 Android,目前正在开发一个天气应用程序。
目前,用户可以输入城市并获得相关信息。我想通过允许用户为多个位置存储不同的天气预报来扩展它。
存储用户选择的最佳方式是什么?SQLLiteDatabase 或 SharedPreferences?我希望即使进程被终止也能保存用户位置,因此当用户打开应用程序时,这些位置的天气仍然存在,用户不必再次重新添加它们。
我正在通过构建应用程序来学习 Android,目前正在开发一个天气应用程序。
目前,用户可以输入城市并获得相关信息。我想通过允许用户为多个位置存储不同的天气预报来扩展它。
存储用户选择的最佳方式是什么?SQLLiteDatabase 或 SharedPreferences?我希望即使进程被终止也能保存用户位置,因此当用户打开应用程序时,这些位置的天气仍然存在,用户不必再次重新添加它们。
如果您只是存储位置,我建议您使用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");
}
答案取决于您要保存的位置数据类型。如果它只是一对,例如将城市名称与唯一标识符匹配,那么SharedPreferences
就足够了。但是,如果您希望存储有关位置的更多信息(州、城市、邮政编码、纬度、经度等...),您将需要考虑使用像 SQLite 这样的完整关系数据库。这将允许您以易于操作的形式存储复杂的数据,并使您能够执行复杂的查询,例如获取特定状态下的所有已保存位置。