Was ist der Unterschied zwischen getDefaultSharedPreferences
und getSharedPreferences
in Android? Kann jemand bitte erklären?
224
Was ist der Unterschied zwischen getDefaultSharedPreferences
und getSharedPreferences
in Android? Kann jemand bitte erklären?
Context
Instanz benötigen, um eine der beiden aufzurufen.Antworten:
getDefaultSharedPreferences
wird ein Standardname wie „com.example.something_preferences“ verwenden , abergetSharedPreferences
wird erfordern einen Namen.getDefaultSharedPreferences
in der Tat verwendetContext.getSharedPreferences
(unten ist direkt aus der Android-Quelle):quelle
getDefaultSharedPreferencesName
ist nicht öffentlich, da der Name für das Backup / Restore-Framework benötigt wird.Lassen Sie uns die grundlegenden Unterschiede überprüfen:
getDefaultSharedPreferences()
verwendet einen Standardnamen für die Einstellungsdatei. Diese Standardeinstellung wird pro Anwendung festgelegt, sodass alle Aktivitäten im selben App-Kontext wie im folgenden Beispiel problemlos darauf zugreifen können:Die Einstellungen werden normalerweise unter gespeichert
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.Die alternative Methode -
getSharedPreferences(name,mode)
erfordert die Angabe eines bestimmten Präferenznamens (Datei) und eines Betriebsmodus (z. B. privat, world_readable usw.)Wie von copolii erwähnt, ist das Ergebnis das gleiche, aber die erste Option ist einfacher und es fehlt die Flexibilität, auf mehrere Voreinstellungsdateien aufzuteilen, die durch die zweite Option von angeboten wird
getSharedPreferences()
. Das Teilen der Einstellungen zwischen Apps mithilfe eines MODE_WORLD_READABLE-Betriebsindikators ist ebenfalls möglichgetSharedPreferences()
, wird jedoch nur selten verwendet.IMHO
getDefaultSharedPreferences()
kann sicher verwendet werden, ohne dass mehrere Präferenzdateinamen verwechselt werden, die zu Tippfehlern und Verwirrung neigen, es sei denn, Sie möchten, dass verschiedene Module in Ihrer App unterschiedliche Präferenzdateien verwenden. Normalerweise wird dies nicht benötigt. Wenn eine App viele Parameter speichern muss, ist die Verwendung einer externen Datenbank wahrscheinlich besser, da sie auch einen besseren Datenschutz bietet.Wenn jemand einen guten Grund kennt, getSharedPreferences () und nicht getDefaultSharedPreferences () regelmäßig zu verwenden, lassen Sie es mich bitte wissen, indem Sie hier einen Kommentar abgeben.
quelle
Ich weiß, dass dieser Beitrag etwas alt ist, aber seit 24.0.1 der v7-Unterstützungsbibliothek können Sie die Standardeinstellungen nach Kontext überall mit abrufen
Siehe https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences
quelle
Es gibt auch eine dritte Funktion:
Siehe meine Frage und Antwort hier: Verwirren Sie sich mit den gemeinsamen Einstellungen von Android - welche Funktion soll verwendet werden?
quelle
Sowohl getSharedPreferences () als auch getDefaultSharedPreferences () werden verwendet, um auf Einstellungen auf Anwendungsebene zuzugreifen. Mit getDefaultSharedPreferences () werden die freigegebenen Einstellungen abgerufen, die gemäß dem allgemeinen Einstellungsframework von Android funktionieren. getDefaultSharedPreferences () ist besser zu verwenden, da es das SharedPreferences-Objekt angibt, das standardmäßig mit einer PreferenceActivity arbeitet.
quelle
Beachten Sie, dass die Verwendung gemeinsamer Standardeinstellungen NICHT mit der Verwendung gemeinsamer Einstellungen mit Ihrem Paketnamen identisch ist:
=> Name der freigegebenen Einstellungen : " com.my.packagename "
=> Name der freigegebenen Einstellungen : " com.my.packagename_preferences "
quelle