Ich verwende SharedPreferences
in meiner Android-App. Ich verwende beides commit()
y apply()
Methode aus der gemeinsamen Präferenz. Wenn ich AVD 2.3 verwende, wird kein Fehler angezeigt, aber wenn ich den Code in AVD 2.1 ausführe, apply()
Methode zeigt einen Fehler.
Was ist also der Unterschied zwischen diesen beiden? Und indem man nur commit()
Kann ich den Präferenzwert problemlos speichern?
132 Stimmen
Dieser Artikel ist zwar schon ein Jahr alt, aber ich werde ihn trotzdem kommentieren, auch wenn es offensichtlich ist, dass keine der Antworten diesen Punkt trifft:
apply()
führt asynchron Festplatten-E/A durch, währendcommit()
ist synchron. Sie sollten also wirklich nichtcommit()
aus dem UI-Thread.0 Stimmen
Wenn mehrere SharedPreferences.Editor-Objekte in Gebrauch sind, wird das letzte Objekt, das die
apply()
gewinnt. Daher können Sieapply()
anstelle voncommit()
sicher, wenn Sie sicherstellen, dass nur ein SharedPreferences.Editor von Ihrer Anwendung verwendet wird.2 Stimmen
Gemäß der Lint-Warnung von Android Studio: commit() speichert Daten sofort und synchron. Mit apply() werden die Daten jedoch asynchron (im Hintergrund) gespeichert, wodurch sich die Leistung etwas verbessert. Deshalb ist apply() gegenüber commit() vorzuziehen, wenn man sich nicht um den Rückgabetyp kümmert (ob die Daten erfolgreich gespeichert wurden oder nicht).
0 Stimmen
Gibt es eine Möglichkeit, die Lint-Warnung zu deaktivieren, wenn Sie
commit()
?