我試圖讓我的SQLite數據庫在我使用單例模式Android應用程序全局訪問:Android的全球訪問SQLite數據庫
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "foo";
private static final int DATABASE_VERSION = 1;
private static MySQLiteOpenHelper instance;
private MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static MySQLiteOpenHelper getInstance(Context context) {
if (instance == null) {
instance = new MySQLiteOpenHelper(context);
}
return instance;
}
public static MySQLiteOpenHelper getInstance() throws UnsupportedOperationException {
if (instance == null) {
throw new UnsupportedOperationException();
}
return instance;
}
...
這裏的想法是,首先調用的是getInstance(Context context)
通過在應用程序對象。此後,我可以使用getInstance()
,因爲我無法獲得Context
對象的句柄。
不過,我來脫膠當我做出初步MySQLiteOpenHelper.getInstance(getApplication())
電話:
java.lang.IllegalStateException: getDatabase called recursively
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:204)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
任何人都可以擺脫對這裏發生了什麼任何燈光或暗示對實現我的目標更好的技術?
乾杯!
只是創建'SQLiteOpenHelper'不會導致這種情況。發佈你的助手'onCreate()'代碼,你可能在那裏有'getWritableDatabase()'。 – laalto
嘎!我以爲我沒有在'onCreate()'方法中犯下任何罪行,但我確實在那裏調皮搗蛋!我會爬回我的岩石下... 謝謝! – user3352488