[android] SQLiteDatabase 와 SQLiteOpenHelper Test |
-
DB File delete 를 수행한 다음 getWritableDatabase 나 getReadableDatabase 를 호출하면 SQLiteOpenHelper 의 onCreate 가 재수행된다. (DB file 의 실 존재 유무를 확인한다는 얘기렸다?)
-
이미 Close 된 DB 에 뭔가를 수행하려 한다면 아래와 같은 IllegalStateException 이 발생한다
java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/com.ck.prodtest/databases/myDB
-
beginTransaction 을 수행한 후 안쪽에서 CUD Operation 을 하고 R(query) 를 수행하면 반영된 내용이 보여진다.
setTransactionSuccessful 을 수행하지 않고 endTransaction 을 하면 beginTransaction 을 수행한 후 수행한 operation 이 초기화가 된다.
( beginTransaction 후에 다른 thread 에서 R 을 하지 않은 이유는 바로 아래에.. )
-
안드로이드에서 beginTransaction 은 Exclusive Lock 을 잡기 때문에
Thread1 Thread2
beginTransaction
beginTransaction // wait 한다
endTransaction
// wait 가 풀리고 Lock 이 잡힌다.
-
안드로이드에서 beginTransaction 은 Exclusive Lock 을 잡기 때문에, beginTransaction 이 시작되면 다른 thread 에서의 write 뿐만 아니라 read operation 역시도 모두 hold 된다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
연락처 계정 생성시 OEM 에서 연락처에서 추가/편집 가능한 Field 정의 (0) | 2019.01.17 |
---|---|
[Map] HashMap vs. TreeMap vs. LinkedHashMap (0) | 2019.01.11 |
[android] Low Memory Kill ( LMK ) (0) | 2019.01.09 |
[android] 언어 변경(language change)했을 때 동작 실험 (0) | 2019.01.08 |
[android] Camera2 API 를 알아보자 (4) | 2019.01.06 |
댓글