J'utilise le code suivant pour enregistrer et récupérer des objets dans et depuis la mémoire interne d'Androids. Je l'ai testé avec un objet chaîne avec succès. Lorsque j'essaie de sauvegarder un bitmap, j'obtiens une exception IOException. (J'ai découvert que je devais appeler la méthode de compression) Donc je remarque que je peux sauver quelques objets, quelles sont les restrictions à la sauvegarde des objets?Certains objets ne sont pas sauvegardés dans la mémoire interne d'Android
Lorsque je sauvegarde un objet, sauvegarde-t-il uniquement les champs? Puis-je sauvegarder des objets contenant d'autres objets? S'il vous plaît, nettoyez-moi.
code:
public Object readObjectFromMemory(String filename) {
Object defautObject = null;
FileInputStream fis;
try {
fis = game.openFileInput(filename);
ObjectInputStream is = new ObjectInputStream(fis);
defautObject = is.readObject();
is.close();
this.gameEngineLog.d(classTAG, "Object successfully read: " + filename);
}
catch (FileNotFoundException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "FileNotFoundException");
this.gameEngineLog.d(classTAG, "Object couldn't be opened: " + filename);
}
catch (StreamCorruptedException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "StreamCorruptedException");
this.gameEngineLog.d(classTAG, "Object couldn't be opened: " + filename);
}
catch (IOException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "IOException");
this.gameEngineLog.d(classTAG, "Object couldn't be opened: " + filename);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "ClassNotFoundException");
this.gameEngineLog.d(classTAG, "Object couldn't be opened: " + filename);
}
return defautObject;
}
public void writeObjectToMemory(String filename, Object object) {
FileOutputStream fos;
try {
fos = game.openFileOutput(filename, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(object);
os.close();
this.gameEngineLog.d(classTAG, "Object successfully written: " + filename);
}
catch (FileNotFoundException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "Object couldn't be written: " + filename);
}
catch (IOException e) {
e.printStackTrace();
this.gameEngineLog.d(classTAG, "Object couldn't be written: " + filename);
}
}
Merci à l'avance.
Lorsque je charge l'objet, les objets marqués comme transitoires sont-ils définis sur null? –
Oui, car il n'y a pas d'autre moyen d'exprimer un état indéfini en Java. – tiguchi
Est-il possible d'enregistrer des types de données transitoires? –