2013-04-24 3 views
13

내 응용 프로그램에서 동기화 어댑터를 사용하여 서버와 기본 및 타사 연락처 (FB 제외)를 동기화하고 싶습니다. (서버 편도 동기화 만 클라이언트)연락처 동기화 어댑터 in 안드로이드

내가 여기에 두 가지 의문이 -

1) 장치에서 여러 동기화 어댑터가있는 경우 및 더티 비트가 이미 다른 동기화 어댑터에 의해 취소하면 내 동기화 어댑터를 것 연락처 변경/업데이트 즉시 감지 할 수 있습니다. 내가 서버와 연락처를 동기화 할

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

을 사용했다

2).

30 초마다 동기화가 시작됩니다.

하지만 연락처가 추가 될 때 즉시 알림을 받거나 삭제되거나 업데이트되어 perfromSync 작업을 시작하고 싶습니다.

옵서버도 사용해야합니까?

답변

3

연락처 변경 사항을 보려면 Observer를 ContentResolver에 등록해야합니다. 동기화 API는 모든 변경 사항을 감시하기위한 것이 아니라 Android가 자동으로 주기적으로 실행되는 백그라운드 API로, 일괄 처리 작업을 수행하고 네트워크를보다 효율적으로 사용할 수 있으며 네트워크 사용 중지시 실행되지 않도록 할 수 있습니다. ..

더티 비트는 계정별로 사용됩니다. 일반적으로 동기화는 연락처 당 "소유"계정을 갖도록 설계되었으며 장치의 모든 연락처를 특정 서비스로 내보내도록 설계되지 않았습니다. 여러 계정의 연락처를 사용자가 볼 수있는 하나의 "연락처"로 결합하는 작업을 처리하는 집계 프로세스가 있습니다. 참조 :

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

을이 작동하는 방법에 대한 자세한 내용은.

장치의 모든 연락처를 서비스로 내보내려면 연락처를 걸어 다니고 서비스에 대한 원시 연락처를 삽입해야합니다. 그러면 사용자가 일부 서비스에서 새 연락처를 추가하는시기를 확인하거나 아직 내 보내지 않은 연락처를 찾는 표를 주기적으로 방문하여 관찰자와 함께 ContentResolver를 보려고 할 것입니다.

2

버전 비트을 사용하십시오. 접촉이 을 편집 한 경우 자동으로 현재 버전에 이전 버전 비교를 위해 그래서 당신은 로컬 데이터베이스를 만들 1.

증가했다. 변경 사항이 발생하면 업데이트 쿼리가 트리거됩니다.

자세한 내용은 here을 참조하십시오.

이 버전은 동기화 업데이트에 도움이됩니다. 그래서 저는이 모든 대답을 나누었습니다.