web-dev-qa-db-fra.com

Comment fonctionne getContentResolver ()?

J'ai regardé un cours sur ContentProvider sur Internet montrant comment définir et utiliser un ContentProvider.

J'étais confus quant à l'utilisation de la méthode nommée getContentResolver(). Que renvoie cette méthode?

Mon ContentProvider n'est pas instancié et le code écrit simplement que getContentProvider().query().

Je ne comprends pas comment ContentProvider fonctionne.

22
Kross

Il renvoie Content Resolver.


Qu'est-ce que le résolveur de contenu?

Le résolveur de contenu est l'instance unique et globale de votre application qui donne accès à vos fournisseurs de contenu (et à d'autres applications). Le résolveur de contenu se comporte exactement comme son nom l'indique: il accepte les demandes des clients et résout ces demandes en les dirigeant vers le fournisseur de contenu avec une autorité distincte. Pour ce faire, Content Resolver stocke un mappage des autorités vers les fournisseurs de contenu. Cette conception est importante, car elle permet un moyen simple et sécurisé d'accéder aux fournisseurs de contenu d'autres applications.

Content Resolver inclut les méthodes CRUD (créer, lire, mettre à jour, supprimer) correspondant aux méthodes abstraites (insérer, supprimer, interroger, mettre à jour) dans la classe Content Provider. Le résolveur de contenu ne connaît pas la mise en œuvre des fournisseurs de contenu avec lesquels il interagit (ni n'a besoin de le savoir); chaque méthode reçoit un URI qui spécifie le fournisseur de contenu avec lequel interagir.


Qu'est-ce que le fournisseur de contenu?

Alors que le résolveur de contenu fournit une abstraction des fournisseurs de contenu de l'application, les fournisseurs de contenu fournissent une abstraction de la source de données sous-jacente (c'est-à-dire un SQLite database). Ils fournissent des mécanismes pour définir la sécurité des données (c'est-à-dire en appliquant des autorisations de lecture/écriture) et offrent une interface standard qui connecte les données dans un processus avec du code s'exécutant dans un autre processus.

Les fournisseurs de contenu fournissent une interface pour la publication et la consommation de données, basée sur un modèle d'adressage URI simple utilisant le content:// schema. Ils vous permettent de découpler vos couches d'application des couches de données sous-jacentes, rendant votre source de données d'application agnostique en faisant abstraction de la source de données sous-jacente.

Source - androiddesignpatterns

50
Aditya

getContentResolver () renvoie une instance ContentResolver pour le package de votre application.

Coller depuis developer.Android.com

Les fournisseurs de contenu gèrent l'accès à un ensemble structuré de données. Ils encapsulent les données et fournissent des mécanismes pour définir la sécurité des données. Les fournisseurs de contenu sont l'interface standard qui connecte les données dans un processus avec du code exécuté dans un autre processus.

Lorsque vous souhaitez accéder aux données d'un fournisseur de contenu, vous utilisez l'objet ContentResolver dans le contexte de votre application pour communiquer avec le fournisseur en tant que client. L'objet ContentResolver communique avec l'objet fournisseur, une instance d'une classe qui implémente ContentProvider. L'objet fournisseur reçoit les demandes de données des clients, exécute l'action demandée et renvoie les résultats.

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

1
GyaniPundit