Android: accedi al database SQLite tramite Content Provider o implementa DAO?

Mi chiedo quale sia l’approccio migliore per accedere al mio database di applicazioni: utilizzare un provider di contenuti o implementare il mio DAO a mano? Dalle mie ultime indagini, sembra che il fornitore di contenuti, anche per uso interno di app, sia preferibile, ma non so esattamente quali sono gli svantaggi di ciascun approccio. Puoi dare un feedback su questo?

Preferisco usare ContentProvider se hai dubbi sulla chiusura o il blocco di db. Controllare Simple Content Provider per le operazioni di DB

Da Google Documenti .

Prima di iniziare a build

Prima di iniziare a creare un provider, effettuare le seguenti operazioni:

Decidi se hai bisogno di un fornitore di contenuti.
È necessario creare un provider di contenuti se si desidera fornire una o più delle seguenti funzionalità:

  • Vuoi offrire dati o file complessi ad altre applicazioni.
  • Desideri consentire agli utenti di copiare dati complessi dalla tua app in altre app.
  • Si desidera fornire suggerimenti di ricerca personalizzati utilizzando la struttura di ricerca.

Non è necessario un provider per utilizzare un database SQLite se l’utilizzo è interamente all’interno della propria applicazione.

Ma poi mi sono un po ‘confuso leggendo questo e altri post. Ha senso utilizzare l’evento content provider se è destinato ad essere utilizzato solo dalla tua app?

Dalla documentazione di ContentProvider:

I fornitori di contenuti sono uno degli elementi costitutivi principali delle applicazioni Android, fornendo contenuto alle applicazioni. Incapsulano i dati e li forniscono alle applicazioni attraverso la singola interfaccia ContentResolver. Un fornitore di contenuti è richiesto solo se è necessario condividere i dati tra più applicazioni. Ad esempio, i dati dei contatti vengono utilizzati da più applicazioni e devono essere memorizzati in un fornitore di contenuti. Se non è necessario condividere i dati tra più applicazioni, è ansible utilizzare un database direttamente tramite SQLiteDatabase.

Mi sembra che, se non hai intenzione di condividere i dati con altre applicazioni, non hai bisogno di un fornitore di contenuti.

Link: http://developer.android.com/reference/android/content/ContentProvider.html