Pourquoi ne ContentResolver.requestSync de ne pas déclencher une synchronisation?

Je suis en train de mettre en œuvre le Fournisseur de Contenu de Synchronisation de l'Adaptateur tel que discuté à Google IO - diapositive 26. Mon fournisseur de contenu est au travail, et ma synchro fonctionne quand je le provoquer de la Dev Outils de Synchronisation de Testeur de l'application, cependant quand je l'appelle ContentResolver.requestSync(compte, l'autorité, le bundle) de mon ContentProvider, mon sync n'est jamais déclenché.

ContentResolver.requestSync(
        account, 
        AUTHORITY, 
        new Bundle());

Edit -- ajoutée manifeste extrait de
Mon manifeste xml contient:

<service
    android:name=".sync.SyncService"
    android:exported="true">
    <intent-filter>
        <action
            android:name="android.content.SyncAdapter" />
    </intent-filter>
    <meta-data android:name="android.content.SyncAdapter"
    android:resource="@xml/syncadapter" />
</service>

--Edit

Mon syncadapter.xml associé avec mon service de synchronisation contient:

<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"  
    android:contentAuthority="AUTHORITY"
    android:accountType="myaccounttype"
    android:supportsUploading="true"
/>

Pas sûr de ce que d'autres code serait utile. Le compte transmis à requestSync est de "myaccounttype" et l'AUTORITÉ transmise à l'appel à la hauteur de ma syc adaptateur xml.

Est ContentResolver.requestSync la bonne façon de demander une synchronisation? Il ressemble à la synchronisation outil de test se lie directement le service et les appels démarrer la synchronisation, mais qui semble comme il défait le but de s'intégrer dans l'architecture de synchronisation.

Si c'est la bonne façon de demander une synchronisation, alors pourquoi serait-sync testeur de travail, mais pas de mon appel à ContentResolver.requestSync? Il ya quelque chose que j'ai besoin de passer dans le bundle?

Je suis en train de tester dans l'émulateur sur les appareils exécutant 2.1 et 2.2.

  • Mon problème était que mon point de rupture dans la synchronisation de l'adaptateur n'a pas été atteint... Puis j'ai réalisé que j'étais en train de déboguer un service... Espérons que cela aide d'autres personnes comme moi.
  • Les points d'arrêt de la synchronisation de l'adaptateur de service ne parviennent pas à déclencher. C'est parce que la synchro adaptateur de service s'exécute dans un processus séparé. C'est ce que @danglang laissait présager. Voir aussi cette question: stackoverflow.com/questions/8559458/...
  • Dans mon cas, la suppression android:process=":sync" du service de synchronisation de laisser le débogueur a frappé le bec points. Le service de synchronisation de lui-même travaillait avant que, parce que j'ai pu voir des messages de journaux onPerformSync méthode pour le compte d'un autre processus.
  • Une autre cause est le WiFi désactivé, donc si vous essayez de synchroniser moqué de données, vérifiez votre connexion.
InformationsquelleAutor Ben | 2011-03-09