Molte applicazioni possono fornire un modo per acquisire le preferenze dell'utente sulle impostazioni di un'applicazione o un'attività specifica. Per supportare ciò, Android fornisce un semplice set di API.
Le preferenze sono in genere coppie di valori di nome. Possono essere archiviate come "Preferenze condivise" tra varie attività in un'applicazione (si noti che attualmente non possono essere condivise tra i processi). Oppure può essere qualcosa che deve essere memorizzato in modo specifico per un'attività.
Preferenze condivise: le preferenze condivise possono essere utilizzate da tutti i componenti (attività, servizi, ecc.) Al di fuori delle applicazioni.
Preferenze gestite dall'attività: queste preferenze possono essere utilizzate solo con l'attività e non possono essere utilizzate da altri componenti dell'applicazione.
Preferenze condivise:
Le preferenze condivise vengono gestite con l'aiuto del getSharedPreferencesmetodo della Contextclasse. Le preferenze vengono memorizzate in un file predefinito (1) oppure è possibile specificare un nome file (2) da utilizzare per fare riferimento alle preferenze.
(1) Ecco come ottenere l'istanza quando si specifica il nome del file
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATEè la modalità operativa per le preferenze. È la modalità predefinita e indica che il file creato sarà accessibile solo dall'applicazione chiamante. Altre due modalità supportate sono MODE_WORLD_READABLEe MODE_WORLD_WRITEABLE. In MODE_WORLD_READABLEaltre applicazioni è possibile leggere il file creato ma non modificarlo. In caso di MODE_WORLD_WRITEABLEaltre applicazioni hanno anche i permessi di scrittura per il file creato.
(2) Il modo consigliato è quello di utilizzare la modalità predefinita, senza specificare il nome del file
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Infine, una volta ottenuta l'istanza delle preferenze, ecco come recuperare i valori memorizzati dalle preferenze:
int storedPreference = preferences.getInt("storedInt", 0);
Per memorizzare i valori nel file delle preferenze SharedPreference.Editorè necessario utilizzare l'oggetto. Editorè l'interfaccia nidificata della SharedPreferenceclasse.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
L'editor supporta anche metodi come remove()e clear()per eliminare il valore della preferenza dal file.
Preferenze attività:
Le preferenze condivise possono essere utilizzate da altri componenti dell'applicazione. Ma se non hai bisogno di condividere le preferenze con altri componenti e vuoi avere attività private preferenze. Puoi farlo con l'aiuto del getPreferences()metodo dell'attività. Il getPreferencemetodo utilizza il getSharedPreferences()metodo con il nome della classe di attività per il nome del file delle preferenze.
Di seguito è riportato il codice per ottenere le preferenze
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Anche il codice per memorizzare i valori è lo stesso del caso di preferenze condivise.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
È inoltre possibile utilizzare altri metodi come memorizzare lo stato dell'attività nel database. Nota Android contiene anche un pacchetto chiamato android.preference. Il pacchetto definisce le classi per implementare l'interfaccia utente delle preferenze dell'applicazione.
Per vedere altri esempi, controlla il post di archiviazione dati di Android sul sito degli sviluppatori.