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