¿Cómo usar SharedPreferences como LocalStore, de manera más genérica?

Ser nuevo en el mundo de Android y avanzar con alegría día a día;) Me gustaría compartir ejemplos sobre el uso común.

Aquí viene un ejemplo sobre cómo usar SharedPreferences con una clase LocalStore genérica.

Cree una clase común para ser utilizada por su actividad principal o por cualquiera de las sub-actividades.

public class LocalStore { private static final String TAG = "LocalStore"; private static final String PREF_FILE_NAME = "userprefs"; public static void clear(Context context) { clear(context, "unknown"); } public static void clear(Context context, String caller) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); Log.d(TAG, "caller:"+caller + "|clear LocalStore"); } public static boolean setCustomBooleanData(String key, boolean value, Context context) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.putBoolean(key, value); return editor.commit(); } public static boolean getCustomBooleanData(String key, Context context) { SharedPreferences savedSession = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); return (savedSession.getBoolean(key, false)); } public static boolean setCustomStringData(String key, String value, Context context) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.putString(key, value); return editor.commit(); } public static String getCustomStringData(String key, Context context) { SharedPreferences savedSession = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); return (savedSession.getString(key, null)); } public static boolean isCustomStringExistInLocal(String customKey, Context context) { SharedPreferences savedSession = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); return (savedSession.getString(customKey, null))==null?false:true; } public static boolean saveObject(String objKey, Serializable dataObj, Context context) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.putString(objKey, ObjectSerializer.serialize(dataObj) ); Log.d(TAG, "savedObject| objKey:"+objKey+"/" + dataObj.toString()); return editor.commit(); } public static Object getObject(String objKey, Context context) { SharedPreferences savedSession = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); Object dataObj = ObjectSerializer.deserialize(savedSession.getString(objKey, null)); return dataObj; } } 

Nota: puede utilizar ObjectSerializer desde aquí

¡Disfrutar!

Actualización adicional: Implementé una biblioteca para usar MEMDISKCACHE y SHAREDPREF como GENERIC_STORE cualquier persona interesada puede usarlo desde
-> https://github.com/wareninja/generic-store-for-android

Suponiendo que desea algunos consejos sobre cómo mejorar aún más, aquí tienes.

  • Por lo general, Android sigue una convención para mantener la variable Context como el primer parámetro. Es una buena práctica hacer esto al crear cualquier biblioteca general.
  • Si desea hacerlo más genérico, ¿por qué no intenta sobrecargar el método? Proporcionará al desarrollador más flexibilidad al establecer valores muy parecidos a cómo se manejan los extras en la clase Intent .

Por ejemplo:

 public static boolean setData(Context, String key, boolean value) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.putBoolean(key, value); return editor.commit(); } public static boolean setData(Context, String key, String value) { Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit(); editor.putString(key, value); return editor.commit(); } 

Así que simplemente puede llamar a las funciones sobrecargadas de esta manera:

 setData(this, "myBoolean", true); setData(this, "myString", "Its Awesome"); 
  • Predeterminado Preferencias compartidas me dan valores incorrectos en Service
  • La aplicación sigue olvidando las preferencias compartidas al reiniciar
  • Uso de preferencias compartidas entre actividades
  • SharedPreferences no se guardará si la aplicación se vuelve a abrir
  • Ejecute el código una sola vez después de una instalación nueva, la preferencia compartida no es una solución.
  • SharedPreferences lee valores antiguos
  • Preferencias compartidas - longitud máxima de un solo valor
  • Android: guarda Object to SharedPreferences y lo consigue en cualquier lugar de la aplicación.
  • Guardar el valor del elemento seleccionado mediante la preferencia compartida
  • Android se niega a escribir / crear archivos de preferencias compartidas
  • Android ArrayList de objetos personalizados - Guardar en SharedPreferences - Serializable?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.