2013-07-10 13 views
21

Ho visto un corso su ContentProvider su Internet che dimostra come definire e utilizzare uno ContentProvider.Come funziona getContentResolver()?

Sono stato confuso sull'utilizzo del metodo denominato getContentResolver(). Cosa restituisce questo metodo?

Il mio ContentProvider non è istanziato e il codice scrive solo che getContentProvider().query().

Non capisco come funziona ContentProvider.

+2

Forse guardando in su nelle fonti vi aiuterà? – azizbekian

risposta

48

Restituisce Content Resolver.


Che cos'è il Contenuto Resolver?

Content Resolver è l'unica istanza globale dell'applicazione che consente l'accesso ai provider di contenuto dell'utente (e di altre applicazioni). Content Resolver si comporta esattamente come suggerisce il nome: accetta richieste dai client e risolve tali richieste indirizzandole al fornitore di contenuti con un'autorità distinta. Per fare ciò, Content Resolver memorizza una mappatura dalle autorità ai Content Provider. Questo design è importante, in quanto consente un mezzo semplice e sicuro per accedere ai Content Provider di altre applicazioni.

Content Resolver include i metodi CRUD (creazione, lettura, aggiornamento, eliminazione) corrispondenti ai metodi astratti (inserimento, eliminazione, query, aggiornamento) nella classe Provider di contenuti. Content Resolver non conosce l'implementazione dei Content Provider con cui sta interagendo (né ha bisogno di sapere); ogni metodo viene passato un URI che specifica il Content Provider con cui interagire.


Che cos'è il provider di contenuti?

Mentre Content Resolver fornisce un'astrazione dai fornitori di contenuti dell'applicazione, i fornitori di contenuti forniscono un'astrazione dall'origine dati sottostante (ad esempio uno SQLite database). Forniscono meccanismi per la definizione della sicurezza dei dati (cioè impongono permessi di lettura/scrittura) e offrono un'interfaccia standard che collega i dati in un processo con codice in esecuzione in un altro processo.

I fornitori di contenuti forniscono un'interfaccia per la pubblicazione e il consumo di dati, basata su un semplice modello di indirizzamento URI utilizzando content:// schema. Consentono di disaccoppiare i livelli dell'applicazione dai livelli di dati sottostanti, rendendo agevole l'origine dei dati delle applicazioni estraendo l'origine dati sottostante.

Fonte - androiddesignpatterns

+1

Grazie mille – Kross

1

getContentResolver() Restituisce un'istanza ContentResolver per il pacchetto dell'applicazione.

incollandolo da developer.android.com

fornitori di contenuti gestire l'accesso a un insieme strutturato di dati. Incapsulano i dati e forniscono meccanismi per la definizione della sicurezza dei dati. I fornitori di contenuti sono l'interfaccia standard che collega i dati in un processo con codice in esecuzione in un altro processo.

Quando si desidera accedere ai dati in un provider di contenuti, si utilizza l'oggetto ContentResolver nel contesto dell'applicazione per comunicare con il provider come client. L'oggetto ContentResolver comunica con l'oggetto provider, un'istanza di una classe che implementa ContentProvider. L'oggetto provider riceve richieste di dati dai client, esegue l'azione richiesta e restituisce i risultati.

http://developer.android.com/guide/topics/providers/content-providers.html