Intereting Posts
Есть ли какой-нибудь идентификатор AdMob? Секреты OAuth в мобильных приложениях Как использовать оболочку ADB при подключении нескольких устройств? Ошибка с «ошибкой: более одного устройства и эмулятора» Настройка SeekBar – как правильно позиционировать пользовательский «большой» образ? Учебное пособие по внедрению TabHost в Android 2.2 + ViewPager и фрагментах Как сохранить позицию RecyclerView после изменения Ориентации, используя Firebase & ChildEventListener? Google Play Store: приложения не требуют дополнительных специальных разрешений Как установить базовое время Android Chronometer из объекта Date? Как реализовать / использовать динамический тип в материальном дизайне Android Показать GIF-файл с помощью Glide (библиотека загрузки изображений и кеширования) Как конвертировать дату dd / mm / yyyy в yyyy-MM-dd HH: mm: ss Android Как очистить стек Android-активности? Ошибка подключения к Интернету Android M: невозможно программно удалить Wi-Fi AP Выполнение горизонтальной / вертикальной прокрутки пальцев в сотовом андроидном веб-виде / webkit?

Как использовать 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");