Content Observer onChange méthode appelée deux fois après 1 changement de curseur

J'ai une application dans laquelle je suis l'espoir d'envoyer les détails dans l'android liste de contacts sur un serveur distant, de sorte que l'utilisateur peut consulter ses contacts en ligne.
Pour ce faire, je veux vous informer que le serveur distant de toutes les modifications effectuées sur le téléphone à la liste de contacts.

J'ai mis en place un ContentObserver sur le ContactsContract.Les Contacts.CONTENT_URI' partir d'un service qui est lancé lorsque le téléphone est allumé.

J'ai un certain nombre de quiestions, les 2 premiers sont accessoires, la troisième est ma préoccupation majeure.

1: une Fois que j'ai mis en place un service qui enregistre un ContentObserver sur mon Curseur, n'est que l'observateur n'existent que dans le service? Je veux dire, si le service est tué, le contentObserver continuer à observer?

2: je crois que la réponse est non, mais je vais demander de toute façon. Est-il de toute façon de savoir qui contacter en cours de mise à jour est le déclenchement de la onchange méthode de mon contentObserver? actuellement, j'ai compilé la liste de tous les contacts sur le téléphone et les envoyer à mon serveur distant, il serait tellement plus simple d'envoyer les détails de contacts en cours de mise à jour.

3: C'est ma principale question, quand je fais un changement dans ma Liste de Contacts le onChange méthode est déclenché deux fois en succession rapide. 1 changement 2 appels. Est-il de toute façon de gérer cela?

    public class ContactService extends Service {

    JSONArray contactList;

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onCreate() {
        Log.i("C2DM","content observers initialised");
        super.onCreate();



        //Call Log Content Provider observer

        MyContentContactsObserver contactsObserver = new MyContentContactsObserver();
        ContactService.this.getContentResolver().registerContentObserver (ContactsContract.Contacts.CONTENT_URI, true, contactsObserver);   

    }

    private class MyContentContactsObserver extends ContentObserver {

        public MyContentContactsObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);    
            Log.i("LOG","detected change in contacts: "+selfChange);
        }
    }
}

Résultats en 2 rapide de lignes dans mon logCat:

 detected change in contacts: false 
 detected change in contacts: false

source d'informationauteur Kevin Bradshaw