SQLiteOpenHelper vs ContentProvider

Sono nuovo nello sviluppo di Android. Sto cercando di creare un’applicazione che legge dal database interno (SQLite) e di elencare tutti i dati in un elenco (sto usando listView ).

Finora ho ottenuto una class chiamata DatabaseHandler che estende SQLiteOpenHelper e che sta facendo tutte le operazioni del database (selezionare dati, inserire dati, cancellare dati, …).

Ma ora che voglio elencare i valori, sto leggendo in alcuni siti Web che devo usare un Loader posto di Cursor e quindi un ContentProvider . Finora ho capito che ContentProvider fornisce un accesso controllato al database.

La mia domanda è: il ContentProvider fa lo stesso di SQLiteOpenHelper ?

Inoltre, sto usando il livello API 8 e ContentProvider è disponibile solo al livello API 11. Qual è il modo migliore per risolvere questo problema?

Grazie in anticipo.

La mia domanda è: il ContentProvider fa lo stesso di SQLiteOpenHelper?

ContentProvider è implementato dallo sviluppatore dell’applicazione se consente ad altri sviluppatori di accedere al database dell’applicazione nella propria applicazione, semplicemente per la condivisione . È come un server di qualche database e il suo client è ContentResolver che conosce l’autorità di ContentProvider . Ad esempio, se hai bisogno di ottenere alcuni contatti dal tuo dispositivo, devi utilizzare ContentProvider del database dei contatti e più concretamente le classi del contratto .

Se conosci un’autorità di ContentProvider appropriato, puoi comunicarglielo usando un object ContentResolver .

In altri casi, è necessario interagire con il database tramite il modello astratto SQL rappresentato dalle classi android.database e android.database.sqlite .

E anche – ContentProvider disponibile dal livello API primario come uno dei componenti principali dell’applicazione.

Aggiornare

Dalla documentazione ufficiale:

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.
  • SQLiteOpenHelper viene utilizzato per gestire la creazione e l’apertura del database. È solo una class helper per il database sqlite e potrebbe essere utilizzata ovunque con le operazioni db.

    ContentProvider è uno dei 4 componenti di base di Android, gli altri 3 sono Activity , Service e Broadcast . ContentProvider viene utilizzato per gestire l’accesso a qualsiasi set di dati strutturato, incluso il database sqlite. L’origine dati di ContentProvider potrebbe essere un database ma non deve esserlo.

    ContentProvider viene spesso utilizzato per fornire i propri dati ad altre applicazioni, proprio come ContactsProvider e CalendarProvider . Ed è più sicuro fornire un’interfaccia specifica usando ContentProvider , rispetto a fornire direttamente un database.