2016-05-31 1 views
0

J'ai récemment appris que lors de l'utilisation d'un ContentProvider avec CursorLoaders, il n'est pas nécessaire de créer votre propre ContentObserver, vous venez d'appeler cursor # setNotificationUri() ou getContext(). GetResolver(). NotifyChange. Maintenant, je veux utiliser un SyncAdapter pour effectuer des synchronisations sur le changement de données, et une exigence pour cela est d'avoir un ContentObserver pour les URI respectifs, ma question est, quel effet cela aura-t-il sur la façon d'écouter les changements de données?SyncAdapter sans ContentObserver

Répondre

1

Vous n'avez pas besoin de ContentObserver pour déclencher une synchronisation lors de l'utilisation d'un SyncAdapter. Assurez-vous que vous définissez syncToNetwork à true lorsque vous appelez notifyChange (Uri uri, ContentObserver observer, boolean syncToNetwork). Android appelle automatiquement tous les SyncAdapters pour cette autorité qui ont supportsUploading défini sur true et qui sont configurés pour se synchroniser automatiquement.

+0

mais la méthode cursor.setNotificationUri n'a pas le paramètre syncToNetwork, que dois-je faire dans ce cas? – lll

+0

Ce n'est pas pertinent. C'est uniquement pour informer le curseur des modifications, afin que l'interface utilisateur puisse se mettre à jour immédiatement. Votre fournisseur de contenu doit définir 'syncToNetwork' sur' true' chaque fois qu'un élément a été modifié et qu'il peut être nécessaire de le synchroniser (vous n'avez donc qu'à le configurer lors des opérations d'insertion, de mise à jour et de suppression). Sachez que vous ne devriez pas le mettre à vrai quand quelque chose a été changé par le SyncAdapter (car cela pourrait causer une boucle). – Marten

+0

je vois, merci .. – lll