我有一个类有很多物体像保存列表对象持久化内部android系统
private class MyDataStuff{
private String mostInterestingString;
private int veryImportantNumber
//...you get the idea
public MyDatastuff{
//init stuff...
}
//some getter methods
}
而且我有一个类,让我们把它叫做User
拥有的MyDataStuff
名单,一些多头,弦乐等等。 我想将User
的对象存储到内部存储器上的文件中。我试了下面的代码:
//loading
try{
FileInputStream fis = this.getApplicationContext().openFileInput("UserData.data");
ObjectInputStream is = new ObjectInputStream(fis);
User loadedUser = (User) is.readObject();
is.close();
fis.close();
appUser = loadedUser;
}catch (Exception e){
Log.e("MainActivity", "Error: loading from the internal storage failed - \n" + e.toString());
}
//Saving
if(appUser == null){
Log.e("MainActivity", "Create new User");
appUser = new User();
try{
FileOutputStream fos = this.getApplicationContext().openFileOutput("UserData.data", Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(this);
os.close();
fos.close();
}catch (Exception e){
Log.e("MainActivity", "Error: Failed to save User into internal storage - \n" + e.toString());
}
}
这导致java.io.NotSerializableException
。我阅读了Serializable文档,并通过testwise将User类实现了Serializable并删除了每个属性,除了long和Strings。 它仍然导致这个异常,这让我相信,字符串或长期默认情况下不可序列化。
我需要将对象保存为当前状态。有没有更好的方法来做我想做的事情, 如果没有,我该如何解决这个问题?
您应该专注于保存数据的标准方式。将对象保存到XML文件或数据库中。 API 21具有可持久一束你可以把包包的对象为,但我还没有尝试过呢。 – danny117 2015-01-15 17:37:34