sirve que para from example data code and android android-preferences sharedpreferences

android - que - Diferencia entre getDefaultSharedPreferences y getSharedPreferences



sharedpreferences android code (5)

Repasemos los puntos básicos de la diferencia:

  1. getDefaultSharedPreferences() usa un nombre de archivo de preferencias predeterminado. Este valor predeterminado se establece por aplicación, por lo que todas las actividades en el mismo contexto de la aplicación pueden acceder a él fácilmente como en el siguiente ejemplo:

    SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this); if (spref.contains("email")) { String sEmailAddr = spref.getString("email", ""); }

    Las preferencias generalmente se almacenan en /data/data/com.package.name/shared_prefs/com.package.name_preferences.xml .

  2. El método alternativo - getSharedPreferences(name,mode) requiere indicar un nombre de preferencia específico (archivo) y un modo de operación (por ejemplo, privado, accesible en todo el mundo, etc.)

Como lo mencionó Copolii, el resultado es el mismo, pero la primera opción es más simple y carece de flexibilidad para dividir a múltiples archivos de preferencias, que se ofrece en la segunda opción de getSharedPreferences() . Compartir las preferencias entre aplicaciones usando un indicador de operación MODE_WORLD_READABLE también es algo posible usando getSharedPreferences() , pero rara vez se usa.

En mi humilde opinión, getDefaultSharedPreferences() puede usar de manera segura sin tener que confundir los múltiples nombres de archivos de preferencias que son propensos a errores tipográficos y confusos, a menos que desee que diferentes módulos de su aplicación usen diferentes archivos de preferencias. Normalmente esto no es necesario. Si una aplicación necesita guardar una gran cantidad de parámetros, probablemente el uso de una base de datos externa sea mejor, ya que también ofrece una mejor protección de datos.

Si alguien sabe de una buena razón para usar getSharedPreferences () y no getDefaultSharedPreferences (), hágamelo saber haciendo un comentario aquí.

¿Cuál es la diferencia entre getDefaultSharedPreferences y getSharedPreferences en Android? ¿Alguien por favor puede explicar?


Sé que esta publicación es un poco antigua, pero desde la versión 24.0.1 de la biblioteca de soporte de v7 puede recuperar las preferencias predeterminadas por contexto en cualquier lugar usando

// context might be an application context, activity, .. // so if you want to get your apps defaults, pass an activity context PreferenceManager.getDefaultSharedPreferences(context)

Consulte https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences



Tanto getSharedPreferences () como getDefaultSharedPreferences () se usan para acceder a las preferencias de nivel de aplicación .getDefaultSharedPreferences () se usa para obtener las preferencias compartidas que funcionan de acuerdo con el marco general de preferencias de Android. Es mejor usar getDefaultSharedPreferences (), ya que proporciona el objeto SharedPreferences que funciona con una actividad de preferencia por defecto.


getDefaultSharedPreferences utilizará un nombre predeterminado como "com.example.something_preferences", pero getSharedPreferences requerirá un nombre.

getDefaultSharedPreferences de hecho usa Context.getSharedPreferences (a continuación se encuentra directamente de la fuente de Android):

public static SharedPreferences getDefaultSharedPreferences(Context context) { return context.getSharedPreferences(getDefaultSharedPreferencesName(context), getDefaultSharedPreferencesMode()); } private static String getDefaultSharedPreferencesName(Context context) { return context.getPackageName() + "_preferences"; } private static int getDefaultSharedPreferencesMode() { return Context.MODE_PRIVATE; }