Android Development

SQLiteOpenHelper Singleton instance creating.

꿈소년 2013. 7. 4. 15:00

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

반응형