android - que - Diferencia entre getDefaultSharedPreferences y getSharedPreferences
sharedpreferences android code (5)
Repasemos los puntos básicos de la diferencia:
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
.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)
También hay una tercera función:
public SharedPreferences Activity.getPreferences(int mode) {}
Vea mi pregunta y respuesta aquí: Lío con las preferencias compartidas de Android: ¿qué función usar?
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;
}