Frage

Wie greifen Sie auf eine SQLiteDatabase Datenbank in einem separaten Thread (dh: ein AsyncTask) ein Activity und stellen Sie sicher, dass Sie lassen Sie es immer in einem Rechtsstaat

?

Wenn ich richtig verstehe, kann der Faden jederzeit getötet werden und die Datenbank kann offen bleiben, möglicherweise einen IllegalStateException Beschränkung ( SQLiteDatabase erstellt und nie geschlossen ) zu einem späteren Zeitpunkt.

Wie Sie damit umgehen?

War es hilfreich?

Lösung

Wenn Ihr AsyncTask von Ihrem Activity verwaltet wird, dann Activity AsyncTask in der richtigen Zeit kündigen kann (wenn es anfällig wird von O getötet zu werden, zB nach Activity.onPause()) so AsyncTask.onCancelled() aufgerufen wird, in dem Sie die DB schließen können.

Wenn Ihr AsyncTask (oder ein Thread) nicht dann von Ihrem Activity verwaltet Ihr in Schwierigkeiten sind und in Betracht ziehen sollten Ihre Architektur neu zu gestalten.

Andere Tipps

Zwei Möglichkeiten:

  1. Sie können eine Runtime.addShutdownHook(..) und schließen Datenbank registrieren es.

  2. benutzerdefinierte Application Erstellen und onLowMemory() implementieren, wo Sie die Datenbank schließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top