SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wann sollte ich einen Cursor und db schließen?

Soll ich den Cursor nach jeder Verwendung schließen oder kann ich ihn geöffnet lassen, bis die Ansicht zerstört ist?

Hängt ab. Wenn sich das Cursor-Ergebnis in der Zwischenzeit nicht ändert (z. B. Remote-Verbindung, die den DB ändert), ist es in Ordnung. Vergessen Sie nicht, CursorLoader zu verwenden damit Android Ihren Cursor automatisch verwaltet (z. B. den Cursor schließen, wenn Ihre App abstürzt).

Und dasselbe gilt für die Datenbank, kann sie geöffnet werden, sobald die Aktivität, die diese Ansicht enthält, erstellt und geschlossen wird, wenn die Aktivität zerstört wird?

Ja, Sie können in onResume() öffnen und in onPause() schließen Callbacks oder wenn Sie wissen, dass Ihre Datenbank nicht mehr abgefragt wird.

Wenn ich wie oben beschrieben vorgehe, erhalte ich ständig die Fehlermeldung 'close() was never selected on database...'.

Dies ist nur normal, wenn Ihre App abstürzt. Sollte nicht passieren, wenn Sie es so machen, wie ich es oben gesagt habe.