ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RecordStore close 문제 해결
    Computer/J2ME for GSM 2004. 12. 14. 11:41

    Nokia 3100 기종에서는 RecordStore를 닫지 않으면 저장이 안된다.

    open/close 짝이 맞아야 하고 끝나기 전에 반드시 닫아야 한다.

    따라서 되도록 열고 나서 빨리 닫는 것이 좋은데

    반드시 닫히는 것을 보장하기 위해서 try - catch - finally 구문을 이용하면 좋다.

    예를 들면

     

        void saveOption() {
            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가 더 확실한 보장을 위해서

     

        void saveOption() {
            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는 문법상으로 강제 종료를 하더라도 반드시 실행하도록 되어 있기 때문에

    좀 더 안정적이지 않을까 하는 것이다.

Designed by Tistory.