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
0
A
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.
mais la méthode cursor.setNotificationUri n'a pas le paramètre syncToNetwork, que dois-je faire dans ce cas? – lll
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
je vois, merci .. – lll