Введение:
В некоторых случаях нам нужно хранить некоторые пары ключ-значение в локальной базе данных, чтобы получить к ней очень быстрый доступ. Общие настройки — это один из вариантов, где мы можем хранить пару ключ-значение в локальном хранилище. Это легкая база данных, которая хранится в файле 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() ничего не возвращает, вы можете просто позвонить и оставить его.
Режимы доступа к общим настройкам:
Существуют различные режимы доступа к общим настройкам:
- MODE_PRIVATE: если вы хотите получить доступ к общим настройкам только путем вызова приложения, вы можете использовать этот режим. Используя этот режим, вы можете поддерживать безопасность.
- MODE_APPEND: это добавит новый параметр к уже существующему параметру.
- MODE_WORLD_READABLE: в этом режиме другое приложение может читать ваши общие значения настроек.
- MODE_WORLD_WRITEABLE: в этом режиме другие приложения могут записывать ваши общие настройки.
Данные сохраняются:
Давайте посмотрим, как общие предпочтения поддерживают данные в различных условиях приложения.
Общие предпочтения сохраняют данные до тех пор, пока приложение не удалит или не очистит данные. Если вы очистите кеш приложения, у вас все еще будут общие данные о настройках.
Заключение:
Вы можете использовать общие предпочтения, если хотите хранить небольшие объемы и легкие данные в паре ключ-значение.
Надеюсь, вы хорошо понимаете общие предпочтения. 😊