Как использовать SharedPreferences как LocalStore, более общий?

Быть новым в мире Android и радоваться день за днем;) Я хотел бы поделиться примерами об общем использовании.

Вот пример использования SharedPreferences с общим классом LocalStore.

Создайте общий класс, который будет использоваться вашим основным видом деятельности или любым из под-действий.

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; } } 

Примечание. Вы можете использовать ObjectSerializer здесь

Наслаждайтесь!

Дополнительное обновление: я внедрил библиотеку для использования MEMDISKCACHE и SHAREDPREF как GENERIC_STORE, которые могут заинтересовать ее
-> https://github.com/wareninja/generic-store-for-android

Solutions Collecting From Web of "Как использовать SharedPreferences как LocalStore, более общий?"

Предполагая, что вам нужны некоторые советы о том, как улучшить его еще больше, вы здесь.

  • Обычно Android следует за соглашением, чтобы сохранить переменную Context в качестве первого параметра. Это хорошая практика для этого при создании любой общей библиотеки.
  • Если вы хотите сделать его более универсальным, почему бы не попробовать перегрузку метода? Это даст разработчику большую гибкость при настройке значений, похожих на то, как дополнительные функции обрабатываются в классе Intent .

Например:

 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(); } 

Поэтому вы можете просто вызвать перегруженные функции следующим образом:

 setData(this, "myBoolean", true); setData(this, "myString", "Its Awesome");