2016-08-11 3 views
0

Ich möchte den gesamten Anwendungsstatus speichern und dann beim nächsten Start wiederherstellen. Gibt es eine Bibliothek, die es mir leichter machen würde? Oder hat jemand von euch irgendwelche Vorschläge?Speichern/Wiederherstellen Snapshot/Status der gesamten Anwendung

Standalone-Anwendung

+0

welche Art von Anwendung? Web oder Standalone? – JavaHopper

+0

eigenständige Anwendung – Eric

+0

Ich serialisieren alle Objekte, die in meiner Anwendung zur Laufzeit – JavaHopper

Antwort

0

Es ist ein Design-Muster, das für Ihre purpouse verwendet wird, und es ist das Memento-Muster.

Das Memento-Muster wird mit drei Objekten implementiert: dem Urheber, einem Hausmeister und einem Memento. Der Urheber ist ein Objekt, das einen internen Zustand hat. Der Hausmeister wird etwas mit dem Urheber tun, möchte aber die Veränderung rückgängig machen können. Der Hausmeister fragt zuerst den Urheber nach einem Erinnerungsobjekt. Dann macht es jede Operation (oder Sequenz von Operationen), die es tun würde. Um zu dem Zustand vor den Operationen zurückzukehren, wird das Memento-Objekt an den Urheber zurückgegeben. Das Mementoobjekt selbst ist ein undurchsichtiges Objekt (eines, das der Hausmeister nicht ändern kann oder soll). - Wikipedia

Sie können das Beispiel auf der Wiki-Seite lesen, um zu verstehen, wie Sie es in Ihrem Code verwenden können.

Wenn Sie den Status eines Objekts als Datei speichern und diese auch nach der Ausführung Ihres Programms verfügbar machen möchten, sollten Sie die Serializable-Schnittstelle in der Klasse implementieren, die Sie speichern möchten.

Beispiel:

public class Example implements Serializable 
    { 

    } 

und wo Sie diese Klasse instanziiert:

try{ 

    Example c = new Example(); 
    FileOutputStream fout = new FileOutputStream("YOURPATH"); 
    ObjectOutputStream oos = new ObjectOutputStream(fout); 
    oos.writeObject(c); 
    oos.close(); 
    System.out.println("Done"); 

    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
+0

Bitte markieren Sie meine Antwort als richtig :) –

+0

@Eric Sie können diese Strategie vermeiden. Stellen Sie sich folgendes vor: Jemand benutzt Ihre Anwendung. Ein "Example" -Objekt wird beim Beenden auf dem Laufwerk gespeichert. Eines Tages findest du einen Bug/Fehler in 'Example' (vielleicht hast du ein Wort falsch geschrieben), also bearbeitest du' Example', um den Fehler zu beheben. Wenn Benutzer die Anwendung wieder öffnen, wird versucht, das 'Example'-Objekt vom Laufwerk zu laden, ** wird aber fehlschlagen **, da das Beheben des Fehlers tatsächlich die binäre Darstellung von' Example' ändert. Serialisierung von Objekten "führt zur Implementierung von Leaks" und verhindert, dass die Klasse geändert wird, wenn Instanzen bereits außerhalb der App (auf Ihrem Laufwerk) vorhanden sind –

Verwandte Themen