2012-08-08 5 views
5

Meine App verwendet das Muster SyncAdapter, in dem Benutzeranmeldeinformationen mit AccountManager und ContentProvider gespeichert werden, um Daten in einer Datenbank zu speichern.Löschen der Datenbank, wenn ein Konto entfernt wird

Wenn die account entfernt wird, kann ich die db mit dem in this question beschriebenen Ansatz entfernen. Die db wird entfernt, indem Sie:

boolean deleted = mContext.deleteDatabase(DatabaseHelper.DATABASE_NAME); 

Das funktioniert gut, aber wenn ich den Login wieder tun, ist immer noch alles da. Es fühlt sich an, als ob die ContentProvider nicht weiß, dass die Datenbank entfernt wurde.

In this answer, inazaruk sagt:

Sie müssen sicherstellen, dass Sie den Prozess getötet haben, die Contentprovider hostet, dass bestimmte Datenbankdatei verwendet. Und nur als löschen Sie es.

Das Töten des Prozesses zum Löschen einer db fühlt sich nicht richtig an.

Gibt es eine bessere Sache zu tun?

+0

erwähnt Warum die Datenbankdatei löschen? Werden die Daten nicht ausreichend aus der Datenbank entfernt? – zapl

+0

@zapl: Ja. Ich könnte etwas wie 'löschen von der Tabelle;' machen – Macarse

Antwort

2

Hätte ich zu tun hatte, dass ich es die folgende Art und Weise versuchen würde:

einige Uri hinzufügen, dass, wenn Sie mit einfügen oder löschen, dass Uri Datenbank Löschen in Ihrem ContentProvider auslöst. Löschen Sie beim Löschen auch alle Verweise auf die SQLiteDatabase, da Sie dadurch möglicherweise weiterhin auf die alte Datenbankdatei zugreifen können (Wenn Sie eine Datei unter Linux löschen und diese Datei geöffnet ist, können Sie sie weiterhin verwenden - sie ist einfach nicht mehr zugänglich der Weg).

Indem Sie die Löschung innerhalb der ContentProvider setzen, sollten Sie in der Lage sein, die Datenbankverbindung zu schließen und den Löschstatus so zu verfolgen, dass Sie wissen, dass Sie die Datenbankdatei neu erstellen müssen. Laufen und wahrscheinlich Verweise auf die alte Datei

ContentProviders nicht beenden, wenn Sie Ihre App töten, so dass Sie wahrscheinlich die gleiche Instanz wie oben

Verwandte Themen