Appunti di Android: Storage options
Questo articolo fa parte della collezione Appunti di Android, utili per il corso d'Informatica di Mobile Programming.

Appunti di Android: Storage options

Android fornisce varie opzioni per il salvataggio dei dati. La scelta di quale utilizzare dipende da bisogni specifici quali la privacy, la condivisione con altre applicazioni o la quantità di spazio richiesto.

Shared preferences

La classe SharedPreferences fornisce un framework per il salvataggio e il caricamento di coppie key-value di tipi primitivi (boolean, float, int, long e String) che persisteranno nell’intera sessione utente, anche nel caso in cui l’applicazione venga terminata. Per ottenerne un’istanza si utilizza uno di questi due metodi:

Per scrivere dei valori bisogna invocare il metodo edit() per ottenere uno SharedPreferences.Editor, aggiungere i valori attraverso i metodi put (putBoolean(), putString(), …) e fare il commit dei nuovi valori invocando il metodo commit():

preferences.edit().putBoolean("silentMode", silentMode).commit();

Per leggere i valori, basta invocare i metodi get (getBoolean(), getString(), …):

preferences.getBoolean("silentMode", false);

Internal storage

È possibile salvare dati direttamente nella memoria interna, che di default sono accessibili solo dalla propria applicazione e rimossi quando viene disinstallata. Invocando il metodo openFileOutput(String, int) con il nome del file e la modalità operativa, si ottiene un FileOutputStream, nel quale scrivere tramite write(…) e poi chiudere con close():

FileOutputStream fos = openFileOutput("nomefile", Context.MODE_PRIVATE);
fos.write("ciao".getBytes());
fos.close();

External storage

Ogni dispositivo Android ha a disposizione una memoria esterna, rimovibile o no, che si può utilizzare per salvare file pubblici e modificabili dall’utente. Per poter leggere o scrivere sulla memoria esterna, la propria applicazione deve godere dei permessi di lettura (READ_EXTERNAL_STORAGE) o scrittura (WRITE_EXTERNAL_STORAGE).

Database

Android fornisce supporto completo per SQLite. Ogni database creato sarà accessibile tramite nominativo da qualsiasi classe dell’applicazione, ma non dall’esterno. Il metodo raccomandato per la creazione di un nuovo database SQLite consiste nella creazione di una sottoclasse di SQLiteOpenHelper e l’override del metodo onCreate(SQLiteDatabase), nel quale eseguire comandi per la creazione delle tabelle. Per leggere e scrivere, si usano getWritableDatabase() e getReadableDatabase() che restituiscono un oggetto SQLiteDatabase. Le query si effettuano attraverso il metodo SQLiteDatabase.query(...) che accetta vari parametri, come la tabella da interrogare, proiezione, selezione, colonne, raggruppamento e altro. Ogni query SQLite restituisce un Cursor che punta alle righe restituite dalla query, ovvero un meccanismo attraverso il quale navigare nel risultato della query per leggere righe e colonne.

Network connection

È altresì possibile salvare e caricare i dati dai propri servizi web usando la rete. Per queste operazioni si utilizzano le classi definite all’interno dei package java.net.* e android.net.*.

17 February 2016