일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- kotlin
- 안드로이드
- ActiveMovieControl
- java
- KTS
- build.gradle
- 리눅스
- 자바
- 노개북
- 안드로이드 개발
- Android 4.1
- 구글
- 코틀린
- git
- mime
- 개발
- 탐지기법
- 안철수
- 악성코드
- 보안
- gradle
- OOM
- Android
- Eclipse
- c
- C++
- linux
- ActiveX
- 하버드
- Today
- Total
꿈소년의 개발 이야기
SQLiteOpenHelper Singleton instance creating. 본문
refer: http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
Issue log:
SQLiteConnectionPool The connection pool for database
'/data/data/com.android.providers.media/databases/external.db' has been unable
to grant a connection to thread 554 (eject thread) with flags 0x2 for 750.025
seconds.
Analysis:
SQLiteOpenHelper instance 가 여러 개 생성되어 접근할 경우 발생함.
new 를 이용한 생성 방식은 금지하고 아래 2가지 방식 중 하나를 사용해서 설계해야 함.
1. abstract factory 를 이용한 SQLiteOpenHelper 객체 초기화 및 객체 얻기.
getInstance 함수를 통해서 singleton instance를 얻어 오는 작업.
2. ContentProvider 에서 SQLiteDatabase 를 wrapping 하여 사용하는 법.
LoadManager class를 이용해서 CursorLoader 를 만들어 사용하는 것으로 최근에 나온 것임.
refer: http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html
'Android Development' 카테고리의 다른 글
Activity 방향 고정하기 (0) | 2014.10.01 |
---|---|
안드로이드 리소스 자동 정리 (0) | 2014.09.04 |
ndk-stack 으로 so 파일 debugging 하기 (0) | 2013.05.13 |
Activity unregister / Leaked IntentReceiver issue (0) | 2013.05.09 |
NFC Guide (0) | 2013.05.08 |