Сохранение наборов ключ-значение

Если у вас есть относительно небольшая коллекция пар ключ-значение, которую вы хотели бы сохранить, вы должны использоватьSharedPreferences API. SharedPreferences объект указывает на файл, содержащий пары ключ-значение и обеспечивает простые методы для их чтения и записи. Каждый SharedPreferences файл управляется библиотекой и может быть личным или общим.

Этот курс покажет вам, как использоватьSharedPreferences API для сохранения и извлечения простых значений.

Примечание: SharedPreferences API предназначены только для чтения и записи пар ключ-значение, и вы не должны путать их с Preference API, которые помогают вам строить пользовательский интерфейс для ваших настроек приложения (хотя они используютSharedPreferences в качестве реализации, чтобы сохранить настройки приложение). Информацию об использовании Preference API, см. Настройки.

[wpanchor id=”1″]

Получить общие настройки


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

  • getSharedPreferences() — Используйте этот, если вам необходимо иметь несколько общих файлов настроек идентифицируемым по имени, которое вы укажете в первом параметре. Вы можете вызвать его из любого Context в вашем приложении.
  • getPreferences() — Используйте этот из Activity , если вам нужно использовать только один общий файл настроек для activity . Т.к. он возвращает общий файл настроек по умолчанию, который относится к activity , вам не нужно указывать имя.

Например, следующий код выполняется внутри Fragment. Он обращается к файлу общих настроек, который идентифицируется строкой ресурса R.string.preference_file_key и открывает его с помощью приватного режима, так что файл доступен лишь вашему приложению.

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

 

При именовании общих файлов настроек, вы должны использовать имя, которое однозначно идентифицирует ваше приложение, как например "com.example.myapp.PREFERENCE_FILE_KEY"

С другой стороны, если вам нужно только один общий файл настроек для вашей activity , вы можете использовать getPreferences() метод:

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

 

Внимание: Если вы создаете общий файл настроек с MODE_WORLD_READABLE илиMODE_WORLD_WRITEABLE, то любые другие приложения, которые знают идентификатор файла, могут получить доступ к данным.

[wpanchor id=”2″]

Сохранить общие настройки


Для записи в общий файл настроек, создайте SharedPreferences.Editor с помощью вызова edit()для вашего SharedPreferences.

Передайте ключи и значения, которые необходимо записать, в методы, такие как putInt() иputString(). Затем вызовите commit() для сохранения изменений. Например:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

 

[wpanchor id=”3″]

 

Считать общие настройки


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

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

 

 

Додати коментар