0

データベースに新しいアイテムを挿入するために別のアクティビティを入力すると、戻ってそのアクティビティに入ると、エラーが発生します。

04-03 18:53:26.914: E/Database(18134): Leak found
04-03 18:53:26.914: E/Database(18134): java.lang.IllegalStateException: /data/data/com.app.myapp/databases/BabyApp.db SQLiteDatabase created and never closed
04-03 18:53:26.914: E/Database(18134):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1695)
04-03 18:53:26.914: E/Database(18134):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:739)
04-03 18:53:26.914: E/Database(18134):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:761)
04-03 18:53:26.914: E/Database(18134):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:754)
04-03 18:53:26.914: E/Database(18134):  at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:473)
04-03 18:53:26.914: E/Database(18134):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193)
04-03 18:53:26.914: E/Database(18134):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
04-03 18:53:26.914: E/Database(18134):  at com.app.myapp.DatabaseHelper.open(DatabaseHelper.java:121)
04-03 18:53:26.914: E/Database(18134):  at com.app.myapp.SettingsActivity.init(SettingsActivity.java:80)

これがDatabaseHelper.java:121です

database = dbHelper.getWritableDatabase();

これがSettingsActivityの80行目のコードです。

if (!db.isOpen())
            db.open();
4

2 に答える 2

2

db.close();別のアクティビティに切り替える前に、データベースを閉じるために必ず実行してください

@Override
protected void onStop() {
    super.onStop();

    //closing database connection
    if(db != null)
        db.close();
}
于 2012-04-04T08:55:35.167 に答える
0

あなたもそれを閉じる必要があります...例外が発生した場合は閉じてください。または、いずれにしても、システムリソースであるため、開いたままにしないでください。

于 2012-04-04T08:56:14.200 に答える