SharedPreferences umożliwiają przechowywanie i zarządzanie prostymi danymi prymitywów tj.: wartości logiczne, liczby całkowite i zmiennoprzecinkowe oraz teksty w postaci pary klucz - wartość. Dane przechowywane są na urządzeniu w plików xml niezależnie od cyklu życia aplikacji. Istnieją tak długo dopóki nie zostaną usunięte przez kod programu lub wyczyszczone ręcznie przez użytkownika z danych aplikacji. Aplikacja może posiadać wiele instancji SharedPreferences, które najczęściej są prywatne lecz mogą być także publiczne dla innych aplikacji.
Przeznaczenie
Nazwa SharedPreferences może sugerować przeznaczenie do przechowywania informacji nt ustawień użytkownika, co jest po części prawdą. Jednakże wszystkie informacje, które można sprowadzić do postaci klucz - wartość nadają się do umieszczenia w SharedPreferences. Mogą więc to być ustawienia czy preferencje użytkownika, ale równie dobrze także inne dane stanu aplikacji (np. najlepszy wynik) czy dane autoryzacyjne. Pomimo, że wiele informacji może być technicznie zapisanych w SharedPreferences (np. konwersja do String) to nie wszystkie powinny się tam znaleźć. Umieszczając wartości należy kierować się zasadą prostych, pojedynczych informacji (nie kolekcji). W pozostałych przypadkach warto rozważyć alternatywy w postaci m.in. plików i bazy danych.
Implementacja
Aby uzyskać referencję do wskazanego pliku SharedPreferences należy wywołać metodę getSharedPreferences lub getPreferences. Czytanie wartości odbywa się za pomocą metod get danego typu, natomiast zapisywanie wartości przebiega jako transakcja na obiekcie SharedPreferences.Editor.
Preference
W przypadku standardowych ustawień aplikacji edytowanych przez interfejs graficzny dobrym pomysłem mogłoby być wykorzystanie biblioteki Preference, która ułatwia pracę z SharedPreferences poprzez dostarczenie kontrolek widoku dla kluczy ustawień. W tym celu należy stworzyć Fragment rozszerzający PreferenceFragmentCompat i w metodzie onCreatePreferences przekazać plik xml z preferencjami. Wprowadzane zmiany dotyczą globalnych domyślnych ustawień możliwych do uzyskania przez wywołanie getDefaultSharedPreferences.
DataStore
Biblioteka Preference domyślnie zarząda danymi wykorzystując implementację SharedPreferences. Nierzadko jednak taka realizacja zapisu i odczytu danych może nie być wystarczająca ponieważ może np. zachodzić potrzeba dodatkowego zapisu danych w chmurze ze względu na synchronizację preferencji między urządzeniami. W takiej sytuacji z pomocą przychodzi PreferenceDataStore dostępny od wersji systemu Android O.
Bezpieczeństwo
Biblioteka Security dostarcza dodatkowej ochrony przed niepowołanym dostępem do danych stosując się do kryptograficznych reguł bezpieczeństwa z jednoczesnym zachowaniem wydajności. Wykorzystuje dwuczęściowy system zarządzania kluczami składający się ze zbioru kluczy keyset oraz z klucza głównego master key. Keyset zawiera klucze szyfrujące dane, które są przechowywane w SharedPreferences, natomiast master key jest kluczem szyfrującym klucze z keyset i przechowywany jest w KeyStore. Dostęp do zaszyfrowanych SharedPreferences odbywa się przez instancję EncryptedSharedPreferences.