it-swarm.com.de

Ein SQLiteConnection-Objekt für die Datenbank wurde durchgesickert! Bitte korrigieren Sie Ihre Bewerbung

Meine Bewerbung gibt mir diese Warnung

Ein SQLiteConnection-Objekt für die Datenbank '+ data + data + com_example_test + database' ist gelaufen! Bitte repariere Ihre Anwendung, um laufende Transaktionen ordnungsgemäß zu beenden und zu schließen die Datenbank, wenn sie nicht mehr benötigt wird.

Aber ich schließe das DB-Objekt und den Cursor nach jeder Verwendung.

        try {
            while (cursor.moveToNext()) {
              ...
            }
        } finally {
            if (cursor != null && !cursor.isClosed())
                cursor.close();
        }

...
    db.close();

Kannst du mir helfen zu verstehen, was das Problem ist? Danke !!!

UPDATE! Ich versuche diese Lösung aus diesem Beitrag heraus SQLite-Verbindung ist durchgesickert, obwohl alles geschlossen wurde

und ich habe keinen Speicherleck mehr, ist es eine gute Lösung?

38
user3906040

Mögliche Lösungen

  • Sie haben not committed the transactions begonnen, den Sie gestartet haben (Sie sollten Die Transaktion immer abschließen, wenn Sie begonnen haben)
  • Prüfen Sie, ob Sie die Cursor geschlossen haben, die Sie geöffnet haben, wenn Sie Verwenden, indem Sie Sqlite verwenden.
  • Verschieben Sie den db.close in den finally-Block
  • Sie haben db.close in einer Datenbank nicht aufgerufen, bevor Sie sie mit context.deleteDatabase(...) löschen und anschließend mit dbHelper.getWritableDatabase() erneut erstellen.
26
Devrath

Ziehen Sie den db.close einfach in den finally-Block.

7
G. Blake Meike
//Inside your SQLite helper class
@Override
public synchronized void close () {
    if (db != null) {
        db.close();
        super.close();
    }
}

//Inside the activity that makes a connection to the helper class
@Override
protected void onDestroy () {
    super.onDestroy();
    //call close() of the helper class
    dbHelper.close();
}
1
Ave Maria

Wahrscheinlich haben Sie vergessen, den breakpoint des Debugging zu entfernen Sample: Geben Sie die Bildbeschreibung hier ein

0
steve Rogers

In meinem Fall wurde der Fehler verursacht, wenn Sie versuchen, neue Daten herunterzuladen, und die Datenbank sollte aktualisiert werden.

Ich löste es, die Datenbank durch Aufruf eines SELECT 0 zu instanziieren. Da die Datenbank aktualisiert wurde, versuche ich danach, die neuen Daten herunterzuladen. Und hat gut funktioniert.

0
IgniteCoders