Это моя первая попытка сериализации / десериализации объектов на любой платформе, и, мягко говоря, я в замешательстве.
После реализации Serializable для моего игрового объекта я вывожу его в файл таким образом:
public void saveGameState(){
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(theGame);//theGame is an instance of the custom class
//TGame which stores game info.
byte[] buf = bos.toByteArray();
FileOutputStream fos = this.openFileOutput(filename,
Context.MODE_PRIVATE);
fos.write(buf);
fos.close();
} catch(IOException ioe) {
Log.e("serializeObject", "error", ioe);
}
File f =this.getDir(filename, 0);
Log.v("FILE",f.getName());
}
Кажется, это работает, потому что я не получаю никаких исключений.Я могу точно знать только, когда я его десериализую.Вот где дела идут в форме груши.
public God loadSavedGame(){
TGame g=null;
InputStream instream = null;
try {
instream = openFileInput(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
try {
ObjectInputStream ois = new ObjectInputStream(instream);
try {
g= (TGame) ois.readObject();
return g;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
Я получил основу этого кода отсюда Android Java - Десериализация файла на платформе Android и попытался изменить его для моегоприложение.При запуске я получаю
05-31 23:30:45.493: ERROR/copybit(1279): copyBits failed (Invalid argument)
Когда вывод должен быть загружен и сохраненная игра запускается с момента сохранения.Любая помощь будет оценена.