У меня есть приложение, которое функционирует должным образом и не заставляет закрыть или сбой. Но когда я смотрю на 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()... в основной экран Splash Screen, где находится onStop и т.д.? или той же Деятельности, что и та, которая открывает БД? или.. есть ли другое место?
UPDATE:
Это строка в коде, в которой ошибка продолжает указывать на:
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}