0

Meine Frage ist sehr einfach, aber ich habe keine Antwort gefunden (sorry, wenn es irgendwo ist und es nicht gefunden hat).sharedPreferences apply() speichert alle obigen oder nur die letzte? Wie es funktioniert?

Wie funktioniert sharedpreferences.editor.apply()?

klar zu sein, ich habe diesen Code zum Beispiel:

MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 
MainActivity.editor.putInt(somestring, someint); 
MainActivity.editor.apply(); 
MainActivity.editor.putString(somestring,somestring); 
MainActivity.editor.apply(); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.apply(); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.apply(); 
MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 

Das in meinem Projekt arbeitet. Aber ist es in Bezug auf die Leistung besser, diese oben oder unten zu verwenden?

MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.putInt(somestring, someint); 
MainActivity.editor.putString(somestring,somestring); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.putLong(somestring, somelong); 
MainActivity.editor.putBoolean(somestring, someboolean); 
MainActivity.editor.apply(); 

Grundsätzlich ist der obige Code richtig?
Funktioniert es für alle putSomething oben oder apply() funktioniert nur für einen putSomething?

Antwort

0

Der letzte sicher. Sowohl apply() als auch commit() speichern alle Änderungen. Warum sollten Sie die Änderungen sogar mehrmals anwenden? Obwohl der letzte für die Leistung besser ist, werden Sie nicht wirklich bemerken, weil apply() aSync ist. Mach doch keine unnötigen Sachen. commit() verringert jedoch die Leistung, da es sich nicht um aSync handelt.

+0

Vielen Dank für Ihre Antwort! Sie sind wirklich hilfreich und lehrreich! – PavTze

0

Aufruf apply() einmal speichert alle Änderungen mit dem Editor-Objekt vorgenommen. Also der Code unten ist der richtige. =)

+0

Vielen Dank für Ihre Antwort! – PavTze

0

Der obige Code ist der beste, die Methode apply() wird alle SharedPreferences.Editor Änderungen speichern, und es ist nicht notwendig, es jedes Mal aufzurufen.

nichtig gelten()

Ihre Präferenzen Commit von diesem Editor wieder in den SharedPreferences Objekt sie Bearbeitung ist. Dadurch werden die angeforderten Änderungen automatisch ausgeführt und ersetzen, was derzeit in den SharedPreferences vorhanden ist.

Beachten Sie, dass, wenn zwei Editoren Einstellungen gleichzeitig ändern, der letzte, der aufgerufen wird, Gewinne anwendet.

Wenn Sie die beste Weg, wissen, SharedPreferences besuchen Sie diese Seite zu nutzen:

Best Practices

Und ein wenig Dokumentation:

Documentation

+0

die Seite "Best Practices" sagt * Sorry diese Seite wird nicht mehr unterstützt.Dieser Artikel ist umgezogen zu http://blog.yakivmospan.com/best-practices-for-sharedpreferences/* Nützliche Informationen, können Sie bitte den Link aktualisieren? – Arjan

+0

Vielen Dank für Ihre Antwort und Ihre hilfreichen Links! – PavTze

0

gelten vs begehen

Der Hauptunterschied zwischen der Verwendung von apply() und commit()

.apply() speichert Ihren geänderten Hintergrund Thread.

.commit() speichert Ihre in Haupt-Thread geändert.

Diese beiden Methoden ergeben das gleiche Ergebnis.