Java 如何在整个android应用程序中持久化对象?
当应用程序加载时,我向Web服务发出请求,返回转换为普通旧Java对象的JSON: 机场:Java 如何在整个android应用程序中持久化对象?,java,android,Java,Android,当应用程序加载时,我向Web服务发出请求,返回转换为普通旧Java对象的JSON: 机场: public class Airports { private List<Airport> airportList = new ArrayList<Airport>(); ...get and set... } 现在,由于每次执行请求都要花费高昂的成本,我希望在整个应用程序中都可以访问此机场列表(Airports对象)。如何访问此对象的单个实例的数据 在SQL
public class Airports {
private List<Airport> airportList = new ArrayList<Airport>();
...get and set...
}
现在,由于每次执行请求都要花费高昂的成本,我希望在整个应用程序中都可以访问此机场列表(Airports对象)。如何访问此对象的单个实例的数据
在SQLite中存储将是过度的
现在我已经阅读了有关使用应用程序子类、单例类和共享首选项的内容
我不太确定哪种解决方案最适合这个问题?选择您所说的方法之一是基于您希望这些数据的行为。如果您希望这些数据在应用程序生命周期中保持稳定,那么使用单例或应用程序子类是可以的,但如果您希望这些数据在安装应用程序之前永远保持不变,则可能需要SQLite、文件或共享首选项。所以 在应用程序生命周期内持续
- Java单例模式(通常使用静态成员)
类应用程序的子分类
- SQLite(通常用于大量数据)
- 共享首选项(通常用于小数据)
- 文件
请注意,SQLite和共享首选项方法比使用原始文件更结构化。如果json不太大(数百kb大小),则将其存储在共享首选项中 检索:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String stringJson = sharedPref.getString("jsondata");
if(stringJson != null){
JSONObject jsonData = new JSONObject(stringJson);
}else{
//retrieve from web services
}
sqlite是为存储海量数据而设计的,因此你可以使用sqlite。只要应用程序被加载,或者安装了,sqlite就会一直存在?就我个人而言,我会使用单例来实现。我会将JSON写入一个文件,喝咖啡,过我的生活:)
SharedPreferences.Editor editor = preferences.edit();
editor.putString("jsondata", jsonData.toString());
editor.commit();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String stringJson = sharedPref.getString("jsondata");
if(stringJson != null){
JSONObject jsonData = new JSONObject(stringJson);
}else{
//retrieve from web services
}