¿Cuál es la diferencia entre getDefaultSharedPreferences
y getSharedPreferences
en Android? ¿Alguien puede explicar?Diferencia entre getDefaultSharedPreferences y getSharedPreferences
Respuesta
getDefaultSharedPreferences
utilizará un nombre por defecto como "com.example.something_preferences", pero se getSharedPreferences
requerir un nombre.
getDefaultSharedPreferences
de hecho utiliza Context.getSharedPreferences
(continuación es 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;
}
Para mal 'getDefaultSharedPreferencesName' no es público ya que el nombre es necesario para la estructura de copia de seguridad/restauración. – Martin
¿Qué pasa con http: // stackoverflow.com/questions/10786172/android-getdefaultsharedpreferences? –
¿Y cómo escuchar el cambio de preferencia, en el modo getSharedPreferences que usa un nombre personalizado para preferencia? (no use el nombre predeterminado como getSharedPreferences "com.example.something_preferences") –
Repasemos los puntos básicos de diferencia:
getDefaultSharedPreferences()
utiliza un nombre de preferencia-archivo predeterminado. Este defecto se fija por aplicación, por lo que todas las actividades en el mismo contexto de aplicación puede 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 se almacenan generalmente en
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.El método alternativo -
getSharedPreferences(name,mode)
requiere para indicar una preferencia nombre específico (archivo) y un modo de funcionamiento (por ejemplo, privada, world_readable, etc.)
Como se ha mencionado por copolii, el resultado es el mismo , pero la primera opción es más simple y carece de la flexibilidad para dividirse en varios archivos de preferencias, que ofrece 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()
se pueden usar de forma segura sin confundir los nombres de archivos de preferencias múltiples que son propensos a errores ortográficos y confusos, a menos que desee que diferentes módulos en su aplicación utilicen diferentes archivos de preferencias. Normalmente esto no es necesario. Si una aplicación necesita guardar muchos parámetros, probablemente sea mejor usar una base de datos externa, ya que también ofrece una mejor protección de datos.
Si alguien sabe de una buena razón para usar regularmente getSharedPreferences() y no getDefaultSharedPreferences(), hágamelo saber comentando aquí.
Mi razón es: http://stackoverflow.com/questions/10786172/android-getdefaultsharedpreferences – Kostadin
¿Y cómo escuchar el cambio de preferencia, en el modo getSharedPreferences que usa un nombre personalizado para las preferencias? (No utilice el nombre por defecto como "com.example.something_preferences" getSharedPreferences) –
Hay una tercera función, así:
public SharedPreferences Activity.getPreferences(int mode) {}
Ver mi pregunta y la respuesta aquí: Mess with the shared preferences of android - which function to use?
Este es un contenedor de getSharedPreferences() a partir del código fuente de la actividad: SharedPreferences getPreferences públicas (int modo) { getSharedPreferences retorno (getLocalClassName(), modo); } – tarn
Ambos getSharedPreferences() y getDefaultSharedPreferences() se utilizan 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 de preferencias general de Android. getDefaultSharedPreferences() es mejor usar ya que le da al objeto SharedPreferences que funciona con una actividad de preferencia de forma predeterminada.
- 1. cuando use getDefaultSharedPreferences y getSharedPreferences
- 2. getDefaultSharedPreferences Android
- 3. Android no actividad getSharedPreferences
- 4. MySQL: diferencia entre ', `,' y"
- 5. Diferencia entre objeto y *?
- 6. Diferencia entre. y #
- 7. ¿Diferencia entre == y caso?
- 8. La diferencia entre $ * y $ @
- 9. Diferencia entre & y &
- 10. VBA: Diferencia entre y y +
- 11. cómo usar getSharedPreferences en android
- 12. Diferencia entre -Wconversion entre gcc y g ++
- 13. Diferencia entre subprocess.Popen y os.system
- 14. Diferencia entre decimal y decimal
- 15. ¿Diferencia entre trazo y relleno?
- 16. Diferencia entre interrupción y eventos
- 17. Diferencia entre netTcpContextBinding y netTcpBinding
- 18. ¿Diferencia entre brújula y sass?
- 19. Diferencia entre "__method__" y "método"
- 20. Diferencia entre Mealy y Moore
- 21. Diferencia entre HashSet y HashMap?
- 22. diferencia entre ajax y enviar
- 23. Diferencia entre sistema y shell_exec
- 24. Diferencia entre Style y ControlTemplate
- 25. Diferencia entre relativo y absoluto
- 26. Diferencia entre window.location.href y top.location.href
- 27. Diferencia entre strncpy y memcpy?
- 28. diferencia entre SDL y GLUT
- 29. Diferencia entre Javascript y PHP
- 30. Diferencia entre Session y HttpContext.Current.Session
Una diferencia casi demasiado obvia es que una es estática y la otra no. Pero realmente no importa, ya que necesita una instancia 'Context' para llamar a cualquiera de los dos. – LarsH