Serializable et mise à jour
Bonjour,
J'utilise ceci pour sauvegarder un objet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
public void saveToStream(Context context) {
try {
FileOutputStream stream = context.openFileOutput(FILENAME, 0);
ObjectOutputStream out = new ObjectOutputStream(stream);
out.writeObject(this);
out.close();
stream.close();
} catch (Exception e) {
Log.d("DBG", "Erreur saveToSTream: " + e.getMessage());
}
} |
je peux facilement le relire, mais cet objet complexe qui contient des listes d'objets, des HashMap... est incorrectement lu (des champs sont null) quand je relis le fichier après une mise à jour de l'APK, même quand les modifications ne concernent pas l'objet sérialisé.
et ça c'est très embêtant !
est-ce un phénomène connu, un pb dans mon code, existe-il une autre méthode pour sauvegarder facilement des objets dans un format persistant malgré l'update de l'APK ?
les objets sont de ce type
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
package truc;
public class LesChoses {
public static class Chose1 implements Serializable {
int id;
String name;
}
public static class Chose2 implements Serializable {
int id;
String name;
Chose1 chose1;
}
public static class Choses implements Serializable {
ArrayList<Chose1> choses1 = new ArrayList<Chose1>();
HashMap<Integer, Chose2> choses2 = new HashMap<Integer, Chose2>();
public void saveToStream(...);
}
private static Choses mChoses;
public static Choses getChose() {
...// singleton
}
} |
NB: le volume de données est suffisamment réduit pour que je ne veuille pas passer par une BDD, je veux juste que ce soit persistant.
Merci