Se vuoi salvare una raccolta relativamente piccola di coppie chiave-valore,
puoi utilizzare le API di SharedPreferences
. Un oggetto SharedPreferences
punta a un file contenente coppie chiave-valore e fornisce semplici metodi per leggere
e scrivile. Ogni file SharedPreferences
è gestito dal framework e
possono essere privati o condivisi.
Questa pagina mostra come utilizzare le API SharedPreferences
per archiviare e
per recuperare valori semplici.
Ottieni un handle per le preferenze condivise
Puoi creare un nuovo file delle preferenze condivise o accedere a un file esistente chiamando uno di questi metodi:
getSharedPreferences()
: utilizza questa opzione se hai bisogno di condividere più elementi file di preferenze identificati per nome, che specifichi con il primo . Puoi chiamare questo numero da qualsiasiContext
nella tua app.getPreferences()
: utilizza questa opzione da unaActivity
se necessario utilizzare un solo file di preferenze condiviso per l'attività. Poiché questo recupera un file delle preferenze condivise predefinito che appartiene all'attività, tu non occorre specificare un nome.
Ad esempio, il seguente codice accede al file delle preferenze condivise che
identificato dalla stringa della risorsa R.string.preference_file_key
e la apre
utilizzando la modalità privata, in modo che il file sia accessibile solo dalla tua app:
Kotlin
val sharedPref = activity?.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE)
Java
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
Quando assegni un nome ai file delle preferenze condivise, devi utilizzare un nome univoco
identificabili per la tua app. Un buon modo per farlo è aggiungere il prefisso al nome del file
l'ID richiesta. Ad esempio:
"com.example.myapp.PREFERENCE_FILE_KEY"
In alternativa, se hai bisogno di un solo file di preferenze condiviso per la tua attività,
puoi utilizzare il metodo getPreferences()
:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
Se utilizzi l'API SharedPreferences
per salvare le impostazioni dell'app,
dovrebbe invece utilizzare getDefaultSharedPreferences()
per ottenere il valore predefinito
un file di preferenze condiviso per l'intera app. Per ulteriori informazioni, consulta
Guida per gli sviluppatori alle impostazioni.
Scrivi nelle preferenze condivise
Per scrivere in un file delle preferenze condiviso, crea una SharedPreferences.Editor
chiamando edit()
sul tuo SharedPreferences
.
Passa le chiavi e i valori che vuoi scrivere con metodi come:
putInt()
e putString()
. Quindi chiama apply()
o
commit()
per salvare le modifiche. Ad esempio:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_high_score_key), newHighScore) apply() }
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score_key), newHighScore); editor.apply();
apply()
modifica immediatamente l'oggetto SharedPreferences
in memoria,
scrive gli aggiornamenti sul disco in modo asincrono. In alternativa, puoi utilizzare commit()
per scrivere i dati su disco in modo sincrono. Ma poiché commit()
è sincrona,
dovresti evitare di chiamarlo dal thread principale perché potrebbe mettere in pausa la tua UI
per il rendering delle immagini.
Leggi dalle preferenze condivise
Per recuperare i valori da un file di preferenze condiviso, richiama metodi come
getInt()
e getString()
, ovvero la chiave per il valore che
desiderato e, facoltativamente, un valore predefinito da restituire se la chiave non è presente. Per
esempio:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key) val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key); int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);