Введение:

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

Как это работает:

Общие настройки хранятся в паре ключ-значение, а эта пара ключ-значение хранится в файле XML. Теперь есть три разных способа доступа к этим файлам.

Файл уровня активности:

Если вы хотите сохранить некоторые данные на уровне активности, вы можете использовать метод getPreferences и использовать общие настройки для хранения/доступа к данным. Здесь один файл создается для этого конкретного действия, поэтому вам не нужно указывать имя файла в этом параметре метода.

Файл уровня активности:

Если вы хотите сохранить некоторые данные на уровне активности, вы можете использовать метод getPreferences и использовать общие настройки для хранения/доступа к данным. Здесь один файл создается для этого конкретного действия, поэтому вам не нужно указывать имя файла в этом параметре метода.

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);

Уровень приложения:

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

getSharedPreferences мы можем использовать этот метод и использовать общие настройки для хранения/доступа к данным с использованием нескольких общих файлов настроек. В этом методе мы должны передать имя файла в качестве параметра.

SharedPreferences prefs = getActivity().getSharedPreferences(
        getString(R.string.preference_file_name), Context.MODE_PRIVATE);

Уровень приложения (по умолчанию):

Это также файл общего уровня предпочтений уровня приложения. Файл по умолчанию поддерживается на уровне приложения с некоторым общим именем файла настроек по умолчанию.

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

Разница между getSharedPreferences и getDefaultSharedPreferences заключается в том, что мы должны передавать параметр имени файла в getSharedPreferences, но не в getDefaultSharedPreferences.

Чтение из файла общих настроек:

Чтобы получить данные из общих файлов настроек, мы должны сначала получить доступ к общему файлу настроек, а затем у вас есть разные методы для доступа к разным типам данных, например, getInt(), getString(), getBoolean() и т. д.

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
//     --------- OR --------
// SharedPreferences prefs = getActivity().getSharedPreference("preference_file_name", Context.MODE_PRIVATE);
//     --------- OR ---------
// SharedPreferences prefs = getActivity().getDefaultSharedPreferences(Context.MODE_PRIVATE);

int defaultVal = 0;
int intSharedValue = prefs.getInt(getString(R.string.int_shared_value), defaultVal);

String defaultVal = "";
String strSharedValue = prefs.getString(getString(R.string.string_shared_value), defaultVal);

Запись в общий файл настроек:

Чтобы записать некоторые данные в файл общих настроек, нам снова нужно сначала получить доступ к файлу общих настроек, затем создать редактор для редактирования в файле, а затем, наконец, использовать методы ключ-значение для сохранения в файл общих настроек, такие как putInt(), putString, putBoolean ().

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
//     --------- OR --------
// SharedPreferences prefs = getActivity().getSharedPreference("preference_file_name", Context.MODE_PRIVATE);
//     --------- OR ---------
// SharedPreferences prefs = getActivity().getDefaultSharedPreferences(Context.MODE_PRIVATE);

SharedPreferences.Editor editor = prefs.edit();

editor.putInt(getString(R.string.int_shared_value), intVal);

editor.putString(getString(R.string.string_shared_value), strVal);

editor.apply();
//editor.commit(); we can also use this commit method to save our changes.

.commit() возвращает логическое значение для успеха/неудачи.

.apply() ничего не возвращает, вы можете просто позвонить и оставить его.

Режимы доступа к общим настройкам:

Существуют различные режимы доступа к общим настройкам:

  1. MODE_PRIVATE: если вы хотите получить доступ к общим настройкам только путем вызова приложения, вы можете использовать этот режим. Используя этот режим, вы можете поддерживать безопасность.
  2. MODE_APPEND: это добавит новый параметр к уже существующему параметру.
  3. MODE_WORLD_READABLE: в этом режиме другое приложение может читать ваши общие значения настроек.
  4. MODE_WORLD_WRITEABLE: в этом режиме другие приложения могут записывать ваши общие настройки.

Данные сохраняются:

Давайте посмотрим, как общие предпочтения поддерживают данные в различных условиях приложения.

Общие предпочтения сохраняют данные до тех пор, пока приложение не удалит или не очистит данные. Если вы очистите кеш приложения, у вас все еще будут общие данные о настройках.

Заключение:

Вы можете использовать общие предпочтения, если хотите хранить небольшие объемы и легкие данные в паре ключ-значение.

Надеюсь, вы хорошо понимаете общие предпочтения. 😊