Как указано в Документация для разработчиков Android для getSharedPreferences(), полная подпись метода:
SharedPreferences getSharedPreferences (String name, int mode)
Формальная подпись предоставляет имя первого параметра, name
, который представляет собой информацию, полезную для ответа. Параметр name
— это базовое имя (без расширения файла) файла настроек XML, расположенного в частном хранилище приложения.
Например, этот вызов вернет экземпляр SharedPreferences
, чтобы разрешить чтение и запись. файл настроек settings.xml
приложения:
SharedPreferences sharedPrefs = getSharedPreferences("settings", Context.MODE_PRIVATE);
Как указано в официальной документации, возвращаемый объект SharedPreferences
представляет собой объект с одним экземпляром, который используется всеми вызывающими объектами для одного и того же имени файла. Это означает, что данный вызов не обязательно подразумевает файловый ввод-вывод для чтения данного предпочтения, но может вызвать синхронизацию потоков между потоками в одном и том же приложении.
Указанный файл будет создан, если он еще не существовал до вызова getSharedPreferences()
. Второй аргумент, mode
, представляет собой режим, используемый при создании файла, и должен быть установлен в Context.MODE_PRIVATE
(или целочисленное значение 0
); другие значения режима не задокументированы как разрешенные и не должны использоваться. Как и при создании любого файла, указание режима Context.MODE_PRIVATE
приведет к размещению файла в личном хранилище приложения, как и ожидается при использовании с getSharedPreferences()
.
Вот пример записи значения (999
) в ключ (setting
) в экземпляре SharedPreferences
:
Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putInt("setting", 999);
editor.apply();
Чтение значения из того же ключа делается так:
Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
sharedPrefs.getInt("setting", 0);
Дополнительную информацию об использовании можно найти в разделе Сохранение наборов "ключ-значение" в Руководстве по началу работы с Android.
Обратите внимание, что getSharedPreferences()
— это обобщенная версия getPreferences()
, что часто является лучшим выбором для общих предпочтений приложения. Помимо возможности указать, какой файл настроек использовать с getSharedPreferences()
, в остальном оба метода идентичны по функциям и поведению. Согласно документации getPreferences()
, он просто вызывает getSharedPreferences()
с "имя класса этого действия в качестве имени предпочтений" (первый параметр для getSharedPreferences()
).
person
Michael Gaskill
schedule
20.10.2016