2013-03-11 4 views
19

SharedPreferences werden zum Speichern von Anwendungsdaten in Android verwendet.Unterschied zwischen Festschreiben und Anwenden in Android SharedPreferences

commit() und apply() werden beide zum Speichern der Änderungen in den gemeinsamen Einstellungen verwendet.

Wie in Android-Bibliothek erwähnt:

public abstarct void apply(): 

Im Gegensatz zu begehen(), die synchron seine Vorlieben, um persistente Speicher schreibt, apply() verpflichtet sich, seine Änderungen an der In-Memory- SharedPreferences sofort aber startet eine asynchrone Festschreibung auf Festplatte und Sie werden nicht über Fehler informiert. Wenn ein anderer Editor unter dieses SharedPreferences ein reguläres commit() ausführt, während ein apply() noch aussteht, blockiert commit(), bis alle asynchronen Commits abgeschlossen sind, sowie das Commit selbst.

public abstract boolean commit(): 

Ihre Präferenzen Commit von diesem Editor zu den SharedPreferences wechselt zurück Objekt es Bearbeitung ist. Dies führt automatisch die angeforderten Änderungen durch und ersetzt, was derzeit in den SharedPreferences ist.

Bedeutet dies, dass die von commit() vorgenommenen Änderungen sofort sind wie bei apply() verglichen? Welches ist besser?

Wenn ich denselben gemeinsamen Präferenzwert in der nächsten Sofortaktivität verwenden soll, welchen soll ich verwenden? Wie ich gesehen habe, wenn der Wert von Preference aktualisiert wird, wird es nicht wiedergegeben, bis die Anwendung neu gestartet wird.

Antwort

20

Commit() ist blitzschnell, führt aber Festplattenschreibvorgänge durch. Wenn Sie auf dem ui-Thread sind, sollten Sie apply() aufrufen, das asynchron ist.

+1

ich DINT die Bedeutung der UI-Thread erhalten beziehen sich auf .. !! was genau ist das? Ich bin Anfänger. –

+0

UI-Thread ist der Haupt-Thread, der das Layout festlegt und z. B. den onClick-Listener einstellt. – staaar

+0

richtig, so zeitaufwändige Operationen wie Disk-Schreibvorgänge würde Ihre UI weniger reaktionsfähig machen – fedepaol

13

apply() - gibt Leere

(Anwendung) wurde in 2,3 hinzugefügt, es spart, ohne einen boolean Rückkehr Erfolg oder Misserfolg anzeigt.

commit() - gibt boolean Wert.

commit() gibt true zurück, wenn das Speichern funktioniert, andernfalls false. apply() wurde hinzugefügt, als das Android-Entwicklerteam bemerkte, dass die meisten niemand den Rückgabewert bemerkte, also bewerben Sie sich schneller.

Sie unter Link

What's the difference between commit() and apply() in Shared Preference