我正在使用SQLiteOpenHelper
. 当我的应用程序正常关闭时,该方法中的数据库也正常关闭onDestroy()
。当它被强制关闭时,数据库保持打开状态,稍后,当我的应用程序尝试使用 读取数据库时getReadableDatabase()
,它崩溃并显示以下消息:
09-26 13:45:30.995: ERROR/Database(12632): close() was never explicitly called on database
这是完整的 LogCat:
09-27 03:10:04.331: ERROR/Database(391): close() was never explicitly called on database '/data/data/myApplication/databases/DownloadDatabase1'
09-27 03:10:04.331: ERROR/Database(391): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1847)
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
09-27 03:10:04.331: ERROR/Database(391): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)
09-27 03:10:04.331: ERROR/Database(391): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
09-27 03:10:04.331: ERROR/Database(391): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
我跟踪了堆栈跟踪,我猜这个异常是因为下面的代码行:
setLocale(Locale.getDefault());
上面的代码来自文件SQLiteDatabase.java。关于如何解决这个问题的任何建议?