2013-07-10 4 views
21

Ich beobachtete einen Kurs über ContentProvider im Internet demonstriert, wie man eine ContentProvider definieren und verwenden.Wie funktioniert getContentResolver()?

Ich war verwirrt über die Verwendung der Methode mit dem Namen getContentResolver(). Was gibt diese Methode zurück?

Meine ContentProvider ist nicht instanziert und der Code schreibt nur, dass getContentProvider().query().

Ich verstehe nicht, wie ContentProvider funktioniert.

+2

suchen sie vielleicht in den Quellen bis helfen? – azizbekian

Antwort

48

Es gibt Content Resolver zurück.


Was ist der Content Resolver?

Der Content Resolver ist die einzige globale Instanz in Ihrer Anwendung, die Zugriff auf Ihre Inhaltsanbieter (und andere Anwendungen) ermöglicht. Der Content Resolver verhält sich genau so, wie sein Name sagt: Er akzeptiert Anfragen von Clients und löst diese Anfragen auf, indem er sie an den Inhaltsanbieter mit einer bestimmten Autorität weiterleitet. Zu diesem Zweck speichert der Content Resolver ein Mapping von Behörden zu Content Providers. Dieses Design ist wichtig, da es einen einfachen und sicheren Zugriff auf die Inhaltsanbieter anderer Anwendungen ermöglicht.

Der Content Resolver enthält die CRUD-Methoden (create, read, update, delete), die den abstrakten Methoden (Einfügen, Löschen, Abfragen, Aktualisieren) in der Content Provider-Klasse entsprechen. Der Content-Resolver kennt nicht die Implementierung der Content-Provider, mit denen er interagiert (und muss es auch nicht wissen). Für jede Methode wird ein URI übergeben, der den Inhaltsanbieter angibt, mit dem er interagieren soll.


Was ist der Inhaltsanbieter?

Während der Inhaltsresolver eine Abstraktion von den Inhaltsanbietern der Anwendung bereitstellt, stellt Inhaltsanbieter eine Abstraktion von der zugrunde liegenden Datenquelle bereit (d. H. A SQLite database). Sie bieten Mechanismen zum Definieren der Datensicherheit (d. H. Durch Erzwingen von Lese-/Schreibberechtigungen) und bieten eine Standardschnittstelle, die Daten in einem Prozess mit Code verbindet, der in einem anderen Prozess ausgeführt wird.

Inhaltsanbieter bieten eine Schnittstelle zum Veröffentlichen und Verwenden von Daten basierend auf einem einfachen URI-Adressierungsmodell unter Verwendung der content:// schema. Sie ermöglichen es Ihnen, Ihre Anwendungsschichten von den zugrunde liegenden Datenschichten zu entkoppeln, sodass Ihre Anwendungsdatenquelle durch das Abstrahieren der zugrunde liegenden Datenquelle agnostisch ist.

Quelle - androiddesignpatterns

+1

Vielen Dank – Kross

1

getContentResolver() geben eine ContentResolver Instanz für Paket Ihrer Anwendung.

Einfügen aus developer.android.com

Content-Provider den Zugang zu einem strukturierten Satz von Daten zu verwalten. Sie kapseln die Daten und stellen Mechanismen zur Definition der Datensicherheit bereit. Inhaltsanbieter sind die Standardschnittstelle, die Daten in einem Prozess mit Code verbindet, der in einem anderen Prozess ausgeführt wird.

Wenn Sie auf Daten in einem Inhaltsanbieter zugreifen möchten, verwenden Sie das ContentResolver-Objekt im Kontext Ihrer Anwendung, um mit dem Anbieter als Client zu kommunizieren. Das ContentResolver-Objekt kommuniziert mit dem Provider-Objekt, einer Instanz einer Klasse, die ContentProvider implementiert. Das Provider-Objekt empfängt Datenanforderungen von Clients, führt die angeforderte Aktion aus und gibt die Ergebnisse zurück.

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