Что делает параметр String в getSharedPreferences()?

Редактировать: Предоставленный «дубликат» не решает мой вопрос, поскольку он не полностью отвечает на мой вопрос. (Информация о втором параметре отсутствует).


Этот вопрос предназначен для уточнения информации для новых разработчиков Android, а не для решения моей проблемы. Пожалуйста, пересмотрите мнение против.

Итак, вот метод:

getSharedPreferences(string, Context.MODE_PRIVATE);

Я не могу понять, что делает первый параметр. Что оно делает? Зачем нужен первый параметр, если когда мы что-то сохраняем в SharedPreferences, мы используем ключ?


person Ali Bdeir    schedule 20.10.2016    source источник
comment
developer.android.com/training/basics/data- хранилище/   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif Я знал, что там есть ответ, но я хотел помочь будущим читателям, которым нужен более четкий ответ. :)   -  person Ali Bdeir    schedule 20.10.2016
comment
Возможный дубликат Android SharedPreferences с MODE_PRIVATE,MODE_WORLD_READABLE, MODE_WORLD_WRITABLE   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif НЕ дубликат, этот вопрос недостаточно отвечает на мой вопрос, поскольку он не касается второго параметра   -  person Ali Bdeir    schedule 20.10.2016
comment
Я не уверен, беспокоитесь ли вы о читателе или ТАК. Четко указано, что sharedPreferences — это метод ключ-значение для хранения данных приложений в файле (ваш второй параметр), который можно использовать совместно с другими приложениями или оставить приватным для приложения.   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif, вы явно не читали вопрос, так как вам не хватает второго параметра. Свяжите меня с ответом, который включает это, и я с радостью закрою это как дубликат. В противном случае вы не имеете права говорить, что я делаю это за ТАК баллы, так как вы сами не можете узнать, почему.   -  person Ali Bdeir    schedule 20.10.2016
comment
второй параметр — это имя файла, в котором сохраняются общие настройки.   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif Тогда поставь это как ответ. Если вы найдете ответ в другом сообщении, отметьте ЭТО как дубликат, и я тоже с радостью закрою его.   -  person Ali Bdeir    schedule 20.10.2016
comment
Это не дубликат, ссылка не отвечает на мой вопрос (см. правку). Свяжите меня с ответом, и я с радостью закрою его как дубликат.   -  person Ali Bdeir    schedule 20.10.2016
comment
stackoverflow.com/questions/5946135/   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif Я не уверен, как это связано с моим вопросом.   -  person Ali Bdeir    schedule 20.10.2016
comment
ну, я больше не могу помочь, я дал вам 3 ссылки, которые могут ответить на ваш вопрос. Я согласен, что один не совсем важен, но остальные два ясно объясняют работу getsharedpreference. Пожалуйста, прочитайте их снова.   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif после повторного прочтения я заметил, что это очень косвенно отвечает на мой вопрос. Однако рекомендуются более четкие и прямые ответы.   -  person Ali Bdeir    schedule 20.10.2016
comment
@MohammedAtif ты собираешься опубликовать ответ? В противном случае я буду.   -  person Ali Bdeir    schedule 20.10.2016
comment
братан, обе ссылки ясно говорят, что getsharedpreference использует пользовательский файл (первый параметр) для хранения пар ключ-значение с определенной видимостью (второй параметр). И да, вы перевернули параметры в своем вопросе.   -  person Mohammed Atif    schedule 20.10.2016
comment
@MohammedAtif Если я, разработчик Android в течение 1,5 лет, не понял это с первого раза, я не думаю, что это сделает любой новичок.   -  person Ali Bdeir    schedule 20.10.2016


Ответы (2)


Как указано в Документация для разработчиков 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

Параметр String в getSharedPreferences() — это имя файла, в котором хранятся предоставленные вами ключи и значения. Например:

SharedPreferences.Editor s = getSharedPreferences("Pref",Context.MODE_PRIVATE).edit();
s.putInt("someKey",0);
s.apply();

В вашем приложении будет создан выходной файл с именем Pref, который содержит введенные вами ключи.

person Ali Bdeir    schedule 20.10.2016
comment
@MohammedAtif ах, забыл об этом, я торопился. - person Ali Bdeir; 21.10.2016