SharedPreferences
пошло от того, что это хранилище предназначено для небольшого количества разрозненных данных, например пользовательских настроек.Preference – это класс, который представляет UI-блок в PreferenceFragment и используется для UI-отображения пользовательских настроек. Если у объекта
Preference
задан атрибут key
, то значения автоматически сохраняются в SharedPreferences
по ключу. Допустим, на экран настроек добавлен элемент SwitchPreferenceCompat:
<SwitchPreferenceCompat
app:key="notifications"
app:title="@string/notifications_pref_title"/>
Этот элемент будет показан пользователю как toggle-переключатель. Когда пользователь включает переключатель, в
SharedPreferences
сохраняется пара ключ-значение "notifications" : "true"
.Таким образом
SharedPreferences
– это системное хранилище, а класс Preference
– это один из элементов UI надстройки над этим хранилищем.