Java 如何在整个android应用程序中持久化对象?

Java 如何在整个android应用程序中持久化对象?,java,android,Java,Android,当应用程序加载时,我向Web服务发出请求,返回转换为普通旧Java对象的JSON: 机场: public class Airports { private List<Airport> airportList = new ArrayList<Airport>(); ...get and set... } 现在,由于每次执行请求都要花费高昂的成本,我希望在整个应用程序中都可以访问此机场列表(Airports对象)。如何访问此对象的单个实例的数据 在SQL

当应用程序加载时,我向Web服务发出请求,返回转换为普通旧Java对象的JSON:

机场:

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
}