Was der Inhalt Resolver ist?
Der Inhalt Resolver ist die einzige globale Instanz in Ihrer Anwendung, die Zugriff auf Ihre (und andere Anwendungen) Anbieter Inhalte zur Verfügung stellt. Der Content Resolver verhält sich genau so, wie sein Name impliziert: Er akzeptiert Anfragen von Clients und löst diese Anfragen , indem er sie an den Content Provider mit einer bestimmten Autorität weiterleitet. Um dies zu tun, speichert der Content Resolver eine Zuordnung von Behörden zu Content Provider. Dieses Design ist wichtig, da es einen einfachen und sicheren Zugriff auf die Content Provider anderer Anwendungen ermöglicht. Der Content Resolver enthält die CRUD-Methoden , die den abstrakten Methoden (Einfügen, Löschen, Abfragen, -Update) in der Klasse Content Provider entsprechen. Der Content Resolver kennt nicht die Implementierung der Content Provider, mit denen er interagiert mit (noch muss es wissen); Für jede Methode wird ein URI übergeben, der den Inhaltsanbieter angibt, mit dem er interagieren soll.
Was ist ein Inhaltsanbieter?
Der Inhalt Resolver eine Abstraktion von der Content-Provider der Anwendung bietet, Content Provider stellt eine Abstraktion von der zugrunde liegenden Datenquelle (das heißt eine SQLite-Datenbank). 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.
Content Provider bieten eine Schnittstelle für die Veröffentlichung und raubend Daten, auf Basis eines einfachen Modells URI-Adressierung den Inhalt mit: // Schema. Sie ermöglichen es Ihnen, Ihre Anwendungsschichten von den zugrunde liegenden Datenschichten zu entschärfen, so dass Ihre Anwendung Datenquelle agnostisch durch Abstrahieren der zugrunde liegenden Datenquelle.
Das Leben einer Abfrage
Also, was ist genau der Schritt-für-Schritt-Prozess hinter einer einfachen Abfrage? Wie oben beschrieben, wenn Sie Daten aus Ihrer Datenbank über den Content Provider abfragen, kommunizieren Sie nicht direkt mit dem Provider. Stattdessen verwenden Sie das Content Resolver-Objekt, um mit dem -Provider zu kommunizieren.
Ein Aufruf getContentResolver().query(Uri, String, String, String, String)
wird: Die spezifische Abfolge von Ereignissen, die auftreten, wenn eine Abfrage gemacht wird, ist unten angegeben. Der Aufruf ruft die Abfrage
des Content Resolvers auf, nicht die ContentProvider's
.
Wenn die Methode query
aufgerufen wird, analysiert der Inhaltslöser das Argument uri
und extrahiert seine Berechtigung.
Der Content-Resolver leitet die Anfrage an den Content-Provider, der bei der (eindeutigen) Behörde registriert ist. Dies geschieht durch Aufruf der Methode
des Inhaltsanbieters query
.
Wenn die Methode Content Provider's query
aufgerufen wird, wird die Abfrage ausgeführt, und ein Cursor wird zurückgegeben (oder eine Ausnahme wird ausgelöst). Das resultierende Verhalten hängt vollständig von der
Implementierung des Inhaltsanbieters ab.