Quelle est la différence entre getDefaultSharedPreferences
et getSharedPreferences
dans Android? Quelqu'un peut-il expliquer?
224
Quelle est la différence entre getDefaultSharedPreferences
et getSharedPreferences
dans Android? Quelqu'un peut-il expliquer?
Context
instance pour appeler l'une ou l'autre.Réponses:
getDefaultSharedPreferences
utilisera un nom par défaut comme « com.example.something_preferences », maisgetSharedPreferences
va exiger un nom.getDefaultSharedPreferences
utilise en faitContext.getSharedPreferences
(ci-dessous est directement à partir de la source Android):la source
getDefaultSharedPreferencesName
n'est pas public car le nom est nécessaire pour le framework de sauvegarde / restauration.Passons en revue les principaux points de différence:
getDefaultSharedPreferences()
utilise un nom de fichier de préférences par défaut. Cette valeur par défaut est définie par application, donc toutes les activités dans le même contexte d'application peuvent y accéder facilement comme dans l'exemple suivant:Les préférences sont généralement stockées sur
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.La méthode alternative -
getSharedPreferences(name,mode)
nécessite d'indiquer un nom de préférence spécifique (fichier) et un mode de fonctionnement (par exemple privé, world_readable, etc.)Comme mentionné par copolii, le résultat est le même, mais la première option est plus simple et manque de flexibilité pour se diviser en plusieurs fichiers de préférences, ce qui est offert par la deuxième option de
getSharedPreferences()
. Le partage des préférences entre les applications à l'aide d'un indicateur de fonctionnement MODE_WORLD_READABLE est également possiblegetSharedPreferences()
, mais rarement utilisé.A MON HUMBLE AVIS,
getDefaultSharedPreferences()
peut être utilisé en toute sécurité sans entrer dans la confusion de plusieurs noms de fichiers de préférences sujets aux fautes de frappe et à la confusion, sauf si vous souhaitez que différents modules de votre application utilisent des fichiers de préférences différents. Normalement, cela n'est pas nécessaire. Si une application doit enregistrer de nombreux paramètres, l'utilisation d'une base de données externe sera probablement meilleure car elle offre également une meilleure protection des données.Si quelqu'un connaît une bonne raison d'utiliser régulièrement getSharedPreferences () et non getDefaultSharedPreferences (), veuillez me le faire savoir en commentant ici.
la source
Je sais que ce post est un peu ancien, mais depuis la version 24.0.1 de la bibliothèque de support v7, vous pouvez récupérer les préférences par défaut n'importe où en utilisant
Voir https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences
la source
Il y a aussi une 3ème fonction:
Voir ma question et réponse ici: Mess avec les préférences partagées d'Android - quelle fonction utiliser?
la source
GetSharedPreferences () et getDefaultSharedPreferences () sont utilisés pour accéder aux préférences au niveau de l'application .getDefaultSharedPreferences () est utilisé pour obtenir les préférences partagées qui fonctionnent conformément au cadre de préférences général d'Android. Il est préférable d'utiliser getDefaultSharedPreferences () car il donne par défaut l'objet SharedPreferences qui fonctionne avec une PreferenceActivity.
la source
N'oubliez pas que l'utilisation des préférences partagées par défaut n'est PAS la même chose que l'utilisation des préférences partagées avec le nom de votre package:
=> Nom des préférences partagées: " com.my.packagename "
=> Nom des préférences partagées: " com.my.packagename_preferences "
la source