Questo suggerimento rapido per Android ti introdurrà alle varie opzioni di archiviazione dei dati disponibili sulla piattaforma Android. Sarà inoltre fornita una breve panoramica pratica con considerazioni su ciascuna opzione di archiviazione.
Quando sviluppi applicazioni Android, hai una serie di opzioni in termini di modalità di archiviazione e gestione dei dati. A seconda dell'app, potresti trovarti a utilizzare più di una di queste per attività di dati differenti.
È possibile memorizzare gli elementi di dati nella memoria interna sui dispositivi degli utenti. Il vantaggio è che non si basa su alcun supporto esterno, ma lo svantaggio è che alcuni dispositivi hanno una quantità estremamente limitata di spazio di archiviazione disponibile. La memorizzazione nella memoria interna significa essenzialmente il salvataggio di file di dati all'interno della struttura di directory del dispositivo interno.
Il seguente codice Java dimostra l'apertura di un file per l'output di dati:
// ottiene un oggetto FileOutputStream passando il nome-file FileOutputStream dataFileOutput = openFileOutput ("datafile", Context.MODE_PRIVATE);
Quando si salvano i file nella memoria interna, le altre applicazioni non possono accedervi e, per impostazione predefinita, nessuno dei due può farlo, quindi offre una buona affidabilità. Il metodo di scrittura FileOutputStream accetta parametri di byte, quindi puoi utilizzare questa tecnica solo per memorizzare gli elementi di dati che il tuo programma può convertire in byte.
Molti utenti Android dipendono dall'archiviazione di supporti esterni come le schede SD a causa di una memoria interna insufficiente. Le schede SD offrono alle tue app una maggiore quantità di spazio di archiviazione, ma impongono ulteriori considerazioni. Ad esempio, non si può presumere che un utente abbia una scheda SD o altra risorsa media esterna. Per questo motivo il tuo codice di programmazione deve effettuare controlli prima di memorizzare i dati in questo modo. È inoltre necessario accettare la possibilità che l'utente cambi la propria scheda SD.
Utilizzando la classe Ambiente, le tue app possono verificare la disponibilità di memoria esterna scrivibile come segue:
if (Environment.getExternalStorageState (). equals (Environment.MEDIA_MOUNTED)) // può utilizzare la memoria esterna
Vale anche la pena ricordare che i file salvati su una scheda SD sono accessibili da altre app e direttamente dall'utente, quindi i dati sono più vulnerabili alla corruzione.
Se l'app utilizza elementi di dati più complessi, è possibile creare un database SQLite per archiviarli utilizzando il modello relazionale. Quando crei un database SQLite per la tua app, puoi accedervi da qualsiasi punto all'interno del tuo codice Java e non sarà accessibile da nessun'altra parte. Ci sono molti vantaggi nell'utilizzo di un database, come la possibilità di memorizzare ed eseguire query strutturate.
Per creare un database SQLite personalizzato dal codice Java, è possibile estendere la classe SQLiteOpenHelper, quindi definire e creare le tabelle all'interno del metodo "onCreate", come segue:
public void onCreate (SQLiteDatabase db) db.execSQL ("CREATE TABLE Item (ItemID INTEGER, ItemName TEXT);");
Questa istruzione crea una tabella di database con due colonne al suo interno. La classe SQLiteDatabase fornisce i mezzi per gestire i dati, compresi i metodi di query, inserimento e aggiornamento. Uno dei potenziali svantaggi dell'utilizzo di un database SQLite nelle app Android è la quantità di codice di elaborazione richiesta e il set di abilità necessario. Se sai già come aggirare SQL, non dovresti avere problemi.
Se è necessario archiviare elementi di dati semplici per le app, l'approccio più semplice è utilizzare le preferenze condivise. Questa è probabilmente l'opzione di gestione dei dati più semplice da implementare, ma è adatta solo per elementi di tipo primitivo come numeri e testo. Utilizzando le preferenze condivise, modellate i vostri dati come coppie di valori chiave. Il seguente codice dimostra l'acquisizione di un riferimento all'oggetto SharedPreferences per un'app e la scrittura di un valore su di esso:
// ottieni le preferenze, quindi l'editor, imposta una voce di dati SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); SharedPreferences.Editor prefsEd = appPrefs.edit (); prefsEd.putString ("dataString", "some string data"); prefsEd.commit ();
Tutto ciò che salvi in Preferenze condivise sarà comunque disponibile al prossimo avvio dell'app, quindi è l'ideale per il salvataggio di elementi quali le preferenze e le impostazioni dell'utente. Quando la tua app si avvia, puoi controllare le Preferenze condivise, quindi presentare l'interfaccia e le funzionalità di conseguenza. Il seguente codice mostra il recupero dell'elemento di dati stringa:
// ottiene le preferenze quindi recupera i dati salvati, specificando un valore predefinito AppPrefs = GetSharedPreferences ("MyAppPrefs", 0); String savedData = appPrefs.getString ("dataString", "");
Poiché i dispositivi Android forniscono la connettività Internet, le tue app possono ovviamente utilizzare i dati memorizzati sul Web. Naturalmente, è necessario considerare in che modo le applicazioni faranno fronte a una connettività limitata o mancante. Come con un'applicazione Web, questa opzione consente di memorizzare i dati utilizzando praticamente qualsiasi piattaforma o modello che si preferisce. Il linguaggio Java beneficia anche di una gamma di librerie standard per la gestione dei dati recuperati su una rete, da fonti come database SQL e documenti XML. I pacchetti java.net e android.net forniscono classi per la gestione dei dati in rete.
Se stai sviluppando in Eclipse, puoi controllare manualmente gli aspetti dell'archiviazione dei dati sui dispositivi virtuali nella prospettiva DDMS.
Inevitabilmente, devi adattare il tuo approccio di gestione dei dati ai tuoi progetti di sviluppo Android. La piattaforma è flessibile, quindi c'è molta scelta disponibile. Quando implementi la gestione dei dati all'interno delle tue app, assicurati di testarli sui dispositivi reali e nell'emulatore, poiché c'è più possibilità di errore quando gli utenti accedono alle tue funzionalità all'interno dei loro contesti unici.
Sue Smith
Sono uno sviluppatore web / software e uno scrittore tecnico / comico - per maggiori dettagli, vedere BeNormal.info. Le app di Nonsense sono il mio primo tentativo di sviluppo Android. Ho scritto per molti clienti diversi, tra cui Smashing Magazine. I miei siti includono la rivista di arti marziali BrainDeadAir. Seguimi su Twitter @BrainDeadAir o scrivimi a [email protected].