Le Shared Preferences sono una funzionalità essenziale nello sviluppo di app mobile che consente agli sviluppatori di memorizzare e recuperare piccole quantità di dati sotto forma di coppie chiave-valore. Il meccanismo è particolarmente utile per memorizzare impostazioni dell’utente, stati dell’app o altri dati di configurazione che devono essere conservati tra una sessione e l’altra. Le Shared Preferences fanno parte della piattaforma Android e offrono un modo semplice ed efficiente di gestire dati persistenti senza la necessità di configurare database complessi.
Quando un’app utilizza le Shared Preferences, i dati vengono memorizzati in un file XML nella memoria interna dell’app. Ciò consente all’app di accedere ai dati e aggiornarli rapidamente, migliorando l’esperienza utente perché preferenze e impostazioni dell’utente restano disponibili e aggiornate. Le Shared Preferences sono progettate per essere leggere e private per l’app, ma non sono cifrate, il che le rende una scelta ideale per dati non sensibili in app ottimizzate sia per le prestazioni sia per l’usabilità.
Le Shared Preferences sono un modo semplice ed efficiente di memorizzare piccole quantità di dati come coppie chiave-valore nella memoria locale del dispositivo, consentendo alle applicazioni mobile di conservare impostazioni dell’utente e stati dell’applicazione tra una sessione e l’altra. Questa funzionalità è ideale per memorizzare le preferenze dell’utente, come le impostazioni del tema o se un utente ha effettuato l’accesso, poiché offre una soluzione leggera senza bisogno di un database. I dati restano disponibili per l’applicazione anche dopo che è stata chiusa o riavviata, garantendo un’esperienza utente coerente e personale. Le Shared Preferences sono particolarmente utili quando serve un accesso rapido a dati persistenti e i requisiti di sicurezza sono moderati, poiché i dati non sono cifrati per impostazione predefinita; password e altri segreti non vanno memorizzati in chiaro.
More about Shared Preferences
Le Shared Preferences sono una tecnologia essenziale nello sviluppo di app mobile che consente una memorizzazione semplice ed efficiente di piccole quantità di dati come coppie chiave-valore. Il metodo è ideale per memorizzare impostazioni dell’utente, preferenze dell’applicazione e altri dati persistenti da conservare tra le sessioni. Le Shared Preferences sono particolarmente adatte ai casi in cui accesso rapido ai dati e facilità d’uso sono fondamentali, come impostazioni dell’utente, stato di accesso e configurazione dell’app.
Dal punto di vista tecnico, le Shared Preferences memorizzano i dati in un file XML che si trova nella memoria interna dell’app. Quando un’app vuole memorizzare o recuperare dati, interagisce con questo file tramite un’API che gestisce le operazioni di lettura e scrittura. Ciò rende le Shared Preferences efficienti e facili da implementare, un grande vantaggio per gli sviluppatori che desiderano una gestione dei dati leggera senza dover affrontare operazioni di database complesse.
Le Shared Preferences possono essere usate in diversi scenari, ciascuno a supporto di un diverso tipo di gestione dei dati:
Memorizzazione delle impostazioni dell’utente: le Shared Preferences servono a memorizzare impostazioni definite dall’utente, come tema, preferenze di notifica o scelta della lingua. Ciò garantisce che le preferenze dell’utente vengano conservate anche quando l’app viene chiusa e riaperta.
Gestione delle sessioni: le Shared Preferences possono essere usate per memorizzare dati di sessione, come lo stato di accesso o un ID utente, permettendo all’app di ricordare l’utente tra le sessioni senza accessi ripetuti. I token di accesso e gli altri segreti andrebbero cifrati prima di essere memorizzati.
Dati di configurazione: le applicazioni possono memorizzare dati di configurazione necessari al loro funzionamento, come impostazioni delle funzionalità o valori predefiniti, il che rende semplice adattare il comportamento dell’app senza modificare il codice. Le chiavi API segrete non vanno memorizzate nelle Shared Preferences, poiché tutto ciò che è memorizzato sul dispositivo può essere estratto.
Uno dei maggiori punti di forza delle Shared Preferences è la loro semplicità ed efficienza. L’accesso facile ai dati tramite coppie chiave-valore consente di implementare rapidamente una memorizzazione persistente senza preoccuparsi di operazioni di database complesse. I dati sono inoltre accessibili solo all’app specifica, il che offre un certo grado di sicurezza e privacy.
Il basso consumo di risorse delle Shared Preferences è un altro vantaggio importante. La tecnologia richiede uno spazio di archiviazione e una potenza di elaborazione minimi, il che la rende ideale per i dispositivi mobili in cui l’ottimizzazione delle risorse è critica. Poiché i dati sono memorizzati nella memoria interna dell’app, sono di norma protetti anche dall’accesso di altre app.
In pratica, le Shared Preferences sono state a lungo il modo standard per memorizzare dati utente semplici nelle app Android. Vengono utilizzate per mantenere l’esperienza utente coerente e personale ricordando preferenze e stato dell’utente, e anche per ottimizzare le prestazioni dell’app riducendo la necessità di richieste di dati e chiamate di rete ripetute.
In sintesi, le Shared Preferences sono una tecnologia che unisce semplicità ed efficienza in una soluzione che rende la memorizzazione dei dati più intuitiva e accessibile per gli sviluppatori. La capacità di funzionare senza configurazioni complesse e con un consumo minimo di risorse le rende uno strumento importante nello sviluppo moderno di app, in cui una gestione dei dati rapida e affidabile è essenziale.
Frequently asked questions about Shared Preferences
Che cosa sono le Shared Preferences e come funzionano nello sviluppo Android?
Nello sviluppo Android, le Shared Preferences sono un meccanismo per memorizzare dati semplici come coppie chiave-valore accessibili dai diversi componenti di un’applicazione. Il metodo è ideale per memorizzare piccole quantità di dati, come impostazioni dell’utente o configurazione dell’applicazione, che non richiedono un database.
Quando un’applicazione utilizza le Shared Preferences, viene creato un file che contiene i dati memorizzati, accessibile solo all’applicazione che lo ha creato. I dati sono memorizzati in un file XML nella memoria interna dell’applicazione, che li protegge dall’accesso di altre app su un dispositivo normale, senza root. Gli sviluppatori possono leggere e scrivere facilmente questo file con metodi come getSharedPreferences(), edit(), putString() e commit() o apply() per salvare le modifiche.
Rispetto a soluzioni di memorizzazione più complesse come i database SQLite, le Shared Preferences sono molto più semplici e rapide da implementare, soprattutto quando occorre memorizzare solo dati semplici che non richiedono una memorizzazione strutturata o query complesse. Ciò le rende una scelta efficiente per molte applicazioni che devono memorizzare e recuperare piccole quantità di dati in modo rapido e semplice.
Come si memorizzano e recuperano i dati con le Shared Preferences?
Nelle Shared Preferences i dati vengono memorizzati come coppie chiave-valore. Innanzitutto si ottiene un oggetto SharedPreferences, di solito con getSharedPreferences e un nome di file. Per memorizzare i dati si apre un editor con edit(), si aggiungono i valori con metodi come putString o putBoolean e si salvano le modifiche con apply(), che scrive in modo asincrono, o commit(), che scrive immediatamente.
I dati si recuperano con metodi come getString o getInt, specificando la chiave e un valore predefinito da usare se la chiave non esiste. Per i progetti Android più recenti, Google consiglia spesso DataStore come sostituto più moderno, ma il principio di chiavi e valori è lo stesso.
Quali tipi di dati si possono memorizzare nelle Shared Preferences?
Le Shared Preferences supportano tipi di dati semplici: stringhe di testo (String), numeri interi (int), interi lunghi (long), numeri decimali (float) e valori vero/falso (boolean). È possibile memorizzare anche un insieme di stringhe di testo (Set di String).
Gli oggetti più complessi non possono essere memorizzati direttamente. Possono essere convertiti in testo, ad esempio in JSON, ma ciò è consigliato solo per piccole quantità di dati. Le Shared Preferences sono pensate per informazioni leggere come impostazioni dell’utente, il tema scelto o se un’introduzione è già stata mostrata. I dati più grandi o strutturati vanno in un database come Room o in file.
Qual è la differenza tra le Shared Preferences e altri metodi di memorizzazione come SQLite?
Le Shared Preferences memorizzano piccole quantità di dati come coppie chiave-valore in un file sul dispositivo. Sono semplici da usare ma non adatte a quantità di dati grandi o complesse, e non consentono vere e proprie query.
SQLite, spesso tramite Room, è un database relazionale in grado di gestire grandi quantità di dati strutturati, relazioni tra tabelle e ricerche avanzate. I file sono adatti a immagini, documenti e altri dati di grandi dimensioni. DataStore è la più recente alternativa di Google alle Shared Preferences, con accesso asincrono. La scelta dipende dalla quantità di dati: impostazioni nelle Shared Preferences o in DataStore, dati strutturati in un database.
Come si proteggono i dati memorizzati nelle Shared Preferences?
I dati nelle Shared Preferences sono memorizzati in chiaro nella cartella privata dell’app. Le altre app di norma non vi hanno accesso, ma su un dispositivo con root o tramite alcuni backup il file può essere letto. Password, token e altre informazioni sensibili non vanno quindi memorizzati senza cifratura.
I dati sensibili possono essere cifrati prima della memorizzazione, usando chiavi conservate nell’Android Keystore, progettato per proteggere le chiavi crittografiche. La libreria Jetpack androidx.security:security-crypto offriva in passato EncryptedSharedPreferences a questo scopo, ma Google ha dichiarato deprecata l’intera libreria, compresi EncryptedSharedPreferences, EncryptedFile e MasterKey, a partire dalla versione 1.1.0-alpha07 di aprile 2025. La raccomandazione di Google è invece di usare le normali API della piattaforma, come SharedPreferences, insieme all’uso diretto dell’Android Keystore, in cui si genera una chiave con KeyGenerator e la si usa per cifrare i valori prima di memorizzarli. In generale, sul dispositivo andrebbe memorizzata il minor numero possibile di informazioni sensibili.
Quali limiti tenere presenti nell’uso delle Shared Preferences?
Le Shared Preferences sono pensate per piccole quantità di dati semplici. Grandi quantità di dati possono rallentare l’app, perché l’intero file viene caricato in memoria, e scrivere con commit() sul thread principale può far scattare l’interfaccia utente.
Non esiste un supporto integrato per oggetti complessi, relazioni o query, e i dati non vengono cifrati automaticamente. Non c’è nemmeno sicurezza dei tipi, quindi una chiave o un tipo di dato errato si scopre solo quando l’app è in esecuzione. Le modifiche effettuate contemporaneamente da più processi non vengono gestite in modo affidabile. Per esigenze più avanzate si consigliano DataStore, Room o una memorizzazione cifrata.
Shared Preferences for dummies
Le Shared Preferences sono una funzione intelligente delle app mobile che permette all’app di ricordare piccole informazioni che le hai dato. Pensale come un piccolo taccuino in cui l’app può annotare cose da ricordare per dopo. Per esempio, un’app che ricorda il tuo nome utente, così non devi digitarlo ogni volta che la apri, usa le Shared Preferences per memorizzare quell’informazione. È un modo semplice e veloce per le app di salvare dati che occupano poco spazio e che devono essere disponibili la prossima volta che usi l’app.