Ho difficoltà a ottimizzare la retrocompatibilità, la complessità e le best practice per la gestione del database SQLite su Android. Ho trovato due modi non deprecato per gestire database SQLite e cursori:Gestione di tabelle SQLite e cursori su Android
- direttamente attraverso
android.database.sqlite
ContentProvider
,CursorLoader
eLoaderManager
Sto cercando di progettare il futuro implementazione del database prova. Ciò significa che vorrei implementare una best practice promossa da Google. I found a tutorial sull'implementazione di ContentProvider
e LoaderManager
.
Se seguo le proposte di Lars Vogels, il mio codice è saltato in aria con duplicazioni e complessità non necessarie. Ha senso per alcune tabelle nel mio database. Ma non avrebbe senso implementarlo per una tabella di mappatura con tre campi (per esempio). Inoltre ho problemi con ActionbarSherlock
e l'interfaccia di callback di LoaderManager
(c'è una soluzione ma raddoppierà le mie classi di gestione dei dati).
La gestione diretta del database e dei cursori tramite android.database.sqlite
sta provocando problemi con la gestione delle risorse (chiudi i cursori!) E mi rende responsabile della gestione delle attività.
Le mie domande:
Come che state maneggiando database SQLite su Android?
Quando vai avanti e implementa ContentProvider
e LoaderManager
?
Come rimanere all'indietro?
mio approccio attuale:
ho creato una classe che separa base di dati di I/O (via android.database.sqlite
) da attività. Tutti i metodi aprono e chiudono i cursori che usano durante la loro esecuzione (al di fuori delle mie attività) e restituiscono gli oggetti oi dati secondo necessità (invece di un cursore). Le operazioni di I/O vengono eseguite in AsyncTasks
. Questo approccio sembra molto deprecato.
Non ho la risposta a tutte queste cose, ma so che la libreria di supporto funziona con i caricatori fino alla 2.1. –