我有一个运行正常且不会强制关闭或崩溃的应用程序。但是当我查看 LogCat 时,它偶尔会给我这样的信息:
05-20 15:24:55.338: E/SQLiteDatabase(12707): close() was never explicitly called on database '/data/data/com.---.--/databases/debt.db'
05-20 15:24:55.338: E/SQLiteDatabase(12707): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
有点下...
05-20 15:24:55.338: E/System(12707): Uncaught exception thrown by finalizer
05-20 15:24:55.338: E/System(12707): java.lang.IllegalStateException: Don't have database lock!
我不确定何时应该打开和关闭我的数据库?
我有一个主要活动,它只是一个闪屏。然后它进入一个使用数据库中的信息调用 ListView 的活动;因此,正是在此活动中首次打开数据库。
还有一个其他活动需要数据库,它使用 ListVeew 将其分支出来。我应该什么时候打开和关闭这个?Word似乎是我只需要打开一次,然后在应用程序“暂停”、“停止”或“销毁”时关闭。
如果是这种情况,我应该将 db.close() 方法放在哪里……在 onStop 等所在的启动画面主活动中?还是与打开数据库的活动相同的活动?或者..还有别的地方吗?
更新:
这是错误一直指向的代码行:
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}