-
RecordStore close 문제 해결Computer/J2ME for GSM 2004. 12. 14. 11:41
Nokia 3100 기종에서는 RecordStore를 닫지 않으면 저장이 안된다.
open/close 짝이 맞아야 하고 끝나기 전에 반드시 닫아야 한다.
따라서 되도록 열고 나서 빨리 닫는 것이 좋은데
반드시 닫히는 것을 보장하기 위해서 try - catch - finally 구문을 이용하면 좋다.
예를 들면
try {
RecordStore optionStore = RecordStore.openRecordStore("GGoption", true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeBoolean(soundSetting);
dos.writeBoolean(vibrationSetting);
byte abyte0[] = bos.toByteArray();
if (optionStore.getNumRecords() == 0)
optionStore.addRecord(abyte0, 0, abyte0.length);
else
optionStore.setRecord(1, abyte0, 0, abyte0.length);
dos.close();
optionStore.closeRecordStore();
} catch (Exception e) {
}
}보통 이렇게 하는데 close가 더 확실한 보장을 위해서
try {
RecordStore optionStore = RecordStore.openRecordStore("GGoption", true);
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeBoolean(soundSetting);
dos.writeBoolean(vibrationSetting);
byte abyte0[] = bos.toByteArray();
if (optionStore.getNumRecords() == 0)
optionStore.addRecord(abyte0, 0, abyte0.length);
else
optionStore.setRecord(1, abyte0, 0, abyte0.length);
dos.close();
} catch (Exception e) {
} finally {
optionStore.closeRecordStore();
}
} catch (Exception e) {
}
}이런 식으로 try가 하나 더 감싸게 하고,
finally를 이용해 optionStore를 반드시 닫도록 하는 것이다.
finally는 문법상으로 강제 종료를 하더라도 반드시 실행하도록 되어 있기 때문에
좀 더 안정적이지 않을까 하는 것이다.