2013-04-24 12 views
13

Desidero utilizzare l'adattatore di sincronizzazione nella mia applicazione per sincronizzare i contatti nativi e di terze parti (eccetto FB) con il server. (Solo client a server in un modo di sincronizzazione)Contact sync adapter in android

ho due dubbi qui -

1) Se ci sono più schede di sincronizzazione del dispositivo e se po 'sporco è già liberata da un altro adattatore di sincronizzazione, sarebbe il mio adattatore di sincronizzazione essere in grado di rilevare immediatamente la modifica/aggiornamento dei contatti.

2) Ho usato

ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1); 
ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);  

per sincronizzare i contatti con il server.

Avvia la sincronizzazione ogni 30 secondi.

Ma voglio che venga notificato immediatamente ogni volta che vengono aggiunti i contatti o Eliminati o Aggiornati per avviare l'operazione perfromSync.

Devo utilizzare anche l'osservatore?

risposta

3

Per visualizzare le modifiche ai contatti, è necessario registrare un osservatore con ContentResolver. L'API di sincronizzazione non è intesa per essere controllata da ogni modifica, è intesa come un'API di background che Android esegue periodicamente automaticamente per te, in modo che possa eseguire operazioni batch e utilizzare la rete in modo più efficiente, non eseguito quando la rete è disabilitata, ecc. ..

Il bit dirty viene utilizzato su base account. In generale, la sincronizzazione è progettata per avere un account "proprietario" per contatto e non è progettata per esportare tutti i contatti dal dispositivo a un particolare servizio. Esiste un processo di aggregazione che gestisce l'unione di contatti da più account in un "Contatto" come visualizzato dall'utente. Vedere:

http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html

Per ulteriori informazioni su come funziona.

Se si desidera esportare tutti i contatti sul dispositivo per il servizio, sarà necessario percorrere i contatti e inserire un contatto non elaborato per il servizio. Dovrai anche guardare ContentResolver con un osservatore per vedere quando l'utente aggiunge un nuovo contatto su qualche servizio o periodicamente cammina sul tavolo alla ricerca di contatti che non hai ancora esportato.

2

utilizzare il bit versione. Se il contatto modificato E automaticamente aumentato di 1.

in modo da creare database locale per confrontare Precedente versione al corrente versione. Se si verificano delle modifiche, si attiva la query di aggiornamento.

per ulteriori informazioni visitare here.

Questa versione è utile per gli aggiornamenti di sincronizzazione. Quindi condivido questa risposta per tutti.