Android SQLite SQLiteOpenHelper IllegalStateException - DB Schon Geschlossen Fehler

Diese wurde driving me crazy nun seit ein paar Tagen. Ich habe ein android-Anwendung, die ist ziemlich Komplex. Es verwendet mehrere threads, um ziehen Sie die Daten von einem server, und füllen Sie die SQLite-Datenbank. Ich bin mit einer singleton-Referenz meine Erweiterung von SQLiteOpenHelper. Ich bin öffnen und schließen der Datenbank in jede meiner Aktivitäten.

Der Fehler tritt NUR in einer situation, als ich bin 4 Aktivitäten tief und dann versuchen, wieder aus. Ich habe versucht, verschiedene Möglichkeiten, öffnen und schließen der Datenbank, einschließlich verschieben der Nähe von der onDestroy (), onPause () - Methoden und auch das hinzufügen eines weiteren öffnen der onResume().

Auch der Hinweis, meine Tätigkeiten machen starken Gebrauch von ListViews und ExpandableListViews, die ich verstehen könnte die Datenbank zu schließen, basierend auf diesem Artikel: http://darutk-oboegaki.blogspot.com/2011/03/sqlitedatabase-is-closed-automatically.html

Ich habe mich durch den code, und ich bin entweder schließen alle meine Cursor, oder, wenn Sie zugewiesen wird, einen adapter, ruft startManagingCursor().

Hat jemand eine Ahnung, was Los ist???

java.lang.RuntimeException: Unable to resume activity {com.fieldone/com.fieldone.DispatchActivity}: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3347)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3362)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2162)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:144)
    at android.app.ActivityThread.main(ActivityThread.java:4937)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
    at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:237)
    at android.database.sqlite.SQLiteQuery.requery(SQLiteQuery.java:145)
    at android.database.sqlite.SQLiteCursor.requery(SQLiteCursor.java:567)
    at android.app.Activity.performRestart(Activity.java:3836)
    at android.app.Activity.performResume(Activity.java:3857)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3337)
    ... 10 more

UPDATE: ich habe das problem behoben, aber nicht wissen, WARUM diese Feste. Also, vielleicht hat jemand da draußen weiß oder erklären könnte.

Wenn ich in der 4. Aktivität der Stapel von Aktivitäten, die ich versuchte zu schließen, die db über die db.schließen(). Egal WO ich diese in der onCreate-nachdem ich die Daten die ich brauche, oder in der onStop oder onDestroy, wird dieser Fehler erzeugt. Wenn ich NICHT in der Nähe der db, ich bin nicht mit dem problem. Also, etwas was die db automatisch geschlossen werden. Das merkwürdige ist, obwohl ich mit einer expandableListView in dieser letzten Aktivität, ich bin NICHT mit einem cursorAdapter. Jemand irgendwelche Gedanken? Würde lieben, Sie zu verstehen.

InformationsquelleAutor SBerg413 | 2011-06-30

Schreibe einen Kommentar