Рубрики
Без рубрики

Получите гибкость с помощью общих общих настроек для Android

Полезный метод для хранения и отзыва общих ссылок и общих ссылок в Android. С тегами android, java, производительность.

Если вы попали сюда, вы столкнулись с трудностями, связанными с сохранением Общих предпочтений Android в Сети. В этой статье будет продемонстрирован практический метод абстрагирования всех возможных методов чтения и записи для общих предпочтений в простой универсальный класс.

Фон

По сути, общие предпочтения – это XML-файл, который служит небольшим хранилищем пользовательских предпочтений (настроек). при разработке приложения для Android существует множество функций или настроек, которые жестко привязаны к вкусу пользователя, таких как цвета, темы, шрифты, мелодии звонка и т. Д., Поэтому эти настройки необходимо где-то сохранить, чтобы их можно было извлечь при следующем выполнении приложения, и именно тогда возникает необходимость в небольшом хранилище. Android предложил простой механизм для обеспечения хранения пользовательских предпочтений, представив библиотеку общих предпочтений.

Простое хранение настроек, таких как цвет фона, выглядит следующим образом

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(applicationContext);
SharedPreferences.Editor editor = sp.edit();
editor.putString("background_color", "green");
editor.apply();

Затем Android сохранит его в/data/data/YOUR_APP_PACKAGE_NAME/shared_prefs/YOUR_APP_PACKAGE_NAME_preferences.xml вот так



    green

и позже значение “background_color” может быть извлечено из общих ссылок следующим образом

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(applicationContext);
String defaultValue="white";
String Value = sp.getString("background_color", defaultValue);
Issue

Как видно выше, для хранения строкового значения в sharedpreferences необходимо вызвать метод putString, а также метод getString для его извлечения. Кажется довольно простым, пока приложение не начнет расти, и количество настроек, которые оно требует для хранения, увеличивается вместе с ним.

С другой стороны, для хранения логического значения необходимо вызвать out Boolean()/getBoolean() для сохранения и извлечения предпочтений соответственно.

Решение

Первое решение, которое появится, – использовать статический вспомогательный класс для выполнения этой операции, поэтому для извлечения/хранения строковых значений из общих настроек и для общих настроек что-то вроде приведенного ниже кода потребуется

private static String getPrefString(Context context,String prefName,String defaultValue){
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    String ret = sp.getString(prefName, defaultValue);
    return ret;
}

private static void setPrefString(Context context,String prefName,String value){
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString(prefName, value);
    editor.apply();
}

Кроме того, для Boolean, набора строк, Float, Long и целого числа также потребуется по два метода (всего 12 методов), чтобы иметь возможность обрабатывать хранение/извлечение всех возможных типов, которые можно назвать грязными и ненужными.

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

И его можно использовать для хранения данных следующим образом

new PrefManager(applicationContext).set("background_color","green");

и для его извлечения следующим образом

new PrefManager(applicationContext).get("background_color","white");

Как видно, только с помощью двух методов обрабатываются все возможные типы данных, кроме того, использование является чистым, практичным и понятным. Я надеюсь, что вы нашли этот способ хранения/извлечения данных из/в общие настройки таким же полезным, как и я:)

Оригинал: “https://dev.to/alialp/gain-flexibility-with-generic-shared-preferences-for-android-55o”