Ich versuche meine Anwendung von einem Bestätigungsmodell zu einem Rückgängigmachen-Modell anzupassen. Für diejenigen unter Ihnen, die es nicht wissen, können Sie hier mit einem Klick etwas löschen, aber wenn es ein Fehler war, können Sie es genauso einfach rückgängig machen, anstatt den Benutzer jedes Mal zu unterbrechen, wenn er etwas tun möchte frag das nervige "Bist du sicher, dass du ... willst?" Frage über Dialog.
Meine App wird von der Android SQLite DB unterstützt und ich möchte eine begrenzte Anzahl von Lösch- und Aktualisierungsvorgängen rückgängig machen können. Außerdem muss ich nur eine sequenzielle Änderung rückgängig machen können und die Information muss nicht sehr lange bleiben.
Alles, was ich bei Undo / Redo lese, sagt, dass ich ein Befehlsmodell zum Speichern der Daten verwenden soll. Meine Frage ist, wie kann ich die Änderungen der Datenbank in einer leicht wiederherstellbaren Weise speichern?
Die Idee des Befehlsmusters ist, dass jeder Befehl weiß, wie er rückgängig gemacht werden kann. Zum Beispiel würde ein AddPersonCommand
einen neuen Datensatz zur Persons
-Tabelle in Ihrer Datenbank hinzufügen. Um diesen Befehl rückgängig zu machen, müssen Sie diese Person erneut löschen.
Abhängig von der Art der Anwendung und der Komplexität der Datenbank können Sie die Änderungen einfach so in die Datenbank schreiben, wie Sie es normalerweise tun würden. Sie behalten immer die letzten X-Befehlsobjekte (X ist die Anzahl der Aktionen, die rückgängig gemacht werden können) und rufen bei Bedarf ihre undo
-Methode auf.
Sie können auch die Bibliothek RestorableSQLiteDatabase verwenden, die ein Wrapper für die SQLiteDatabase von android ist und automatisch wiederherstellende SQL-Abfragen generiert, um Änderungen mithilfe eines Tags rückgängig zu machen Name.