Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
296 L’art du développement Android
Quand Android rencontre une Uri de contenu, il peut désormais passer en revue les fournisseurs enregistrés via les manifestes afin de trouver une autorité qui correspond. Il saura
alors quelle application et quelle classe implémentent le fournisseur de contenu et pourra
ainsi établir le lien entre l’activité appelante et le fournisseur de contenu appelé.
Avertissements en cas de modifications
Votre fournisseur de contenu peut éventuellement avertir ses clients lorsque des modifications
ont été apportées aux données d’une Uri de contenu particulière.
Supposons, par exemple, que vous ayez créé un fournisseur de contenu qui récupère des
flux RSS et Atom sur Internet en fonction des abonnements de l’utilisateur (via OPML,
par exemple). Le fournisseur offre un accès en lecture seule au contenu des flux et garde
un œil vers les différentes applications du téléphone qui les utilisent (ce qui est préférable
à une solution où chacun implémenterait son propre système de récupération des flux).
Vous avez également implémenté un service qui obtient de façon asynchrone les mises à
jour de ces flux et qui modifie les données stockées sous-jacentes. Votre fournisseur de
contenu pourrait alerter les applications qui utilisent les flux que tel ou tel flux a été mis à
jour, afin que celles qui utilisent ce flux précis puissent rafraîchir ses données pour disposer
de la dernière version.
Du côté du fournisseur de contenu, cela nécessite d’appeler notifyChange() sur votre
instance de ContentResolver (que vous pouvez obtenir via un appel à getContext().getContentResolver()). Cette méthode prend deux paramètres : l’Uri de
la partie du contenu qui a été modifiée et le ContentObserver qui a initié la modification. Dans de nombreux cas, ce deuxième paramètre vaudra null ; une valeur non null
signifie simplement que l’observateur qui a lancé la modification ne sera pas prévenu de
sa propre modification.
Du côté du consommateur de contenu, une activité peut appeler registerContentObserver() sur son ContentResolver (obtenu via getContentResolver()). Cet appel lie une
instance de ContentObserver à l’Uri fournie – l’observateur sera prévenu à chaque appel
de notifyChange() pour cette Uri. Lorsque le consommateur en a fini avec l’Uri, un
appel à unregisterContentObserver() permet de libérer la connexion.
Livre Android.book Page 296 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 311/391

Suivant