Je construis une application mobile avec J2ME, et j'ai constaté que les données que j'écris dans un RecordStore sont accessibles pendant que le programme est encore en cours mais il est perdu après avoir quitté et le redémarrer. Aucune exception n'est levée, les données sont simplement perdues.Les données de J2ME RecordStore ne persistent pas entre les sessions
MISE À JOUR: Merci à tous pour vos suggestions. J'utilise NetBeans sur Windows 7. Je ne suis pas sûr s'il utilise la version de WTK que j'ai déjà installée ou une autre qu'il a installée ailleurs. J'ai vérifié mon dossier WTK pour les fichiers sur lesquels Pavel a écrit, mais je ne les ai pas trouvés. Maintenant, je suis en train de tester les fonctionnalités nécessitant de la persistance sur mon téléphone et tout le reste dans l'émulateur, mais il serait bien sûr préférable de pouvoir tout tester dans l'émulateur.
private RecordStore recordStore = null;
public MyMIDlet() {
readStuff(); // output: nothing found in recordStore :(
saveStuff();
readStuff(); // output: stuff
}
private void readStuff() {
try {
recordStore = RecordStore.openRecordStore(REC_STORE, true);
int n = recordStore.getNumRecords();
String stuff;
if (n == 0) {
stuff = "nothing found in recordStore :(";
}
else {
stuff = new String(recordStore.getRecord(1));
}
System.out.println(stuff);
}
catch (Exception e) {
System.out.println("Exception occured in readStuff: " + e.getMessage());
}
finally {
if (recordStore != null) {
try {
recordStore.closeRecordStore();
}
catch (Exception e) {
// ignore
}
}
}
}
private void saveStuff() {
try {
recordStore = RecordStore.openRecordStore(REC_STORE, true);
int n = recordStore.getNumRecords();
byte[] stuff = "stuff".getBytes();
recordStore.addRecord(stuff, 0, stuff.length);
} catch (Exception e) {
System.out.println("Exception occured in saveStuff: " + e.getMessage());
} finally {
if (recordStore != null) {
try {
recordStore.closeRecordStore();
} catch (Exception e) {
// ignore
}
}
}
}
Est-ce en cours d'exécution sur un combiné physique ou un émulateur? La persistance des données entre les sessions d'émulation peut dépendre de la manière dont vous quittez et des paramètres que vous avez définis. Le redémarrage de l'émulateur peut effacer les données persistantes. –
Il fonctionne dans un émulateur, mais maintenant je vais l'essayer sur un combiné aussi. Je vous remercie. – neo2862
Il a effectivement travaillé sur mon téléphone. Merci beaucoup! :) – neo2862