지난 몇 주 동안의 동기화 어댑터에 대한 전반적인 개념을 이해하고 기능에 대한 질문이 거의 없습니다. 나는 사용자 계정을 생성하고 또한 동기화 어댑터를 만든Android - Android 연락처의 변경 사항을 듣고 델타 가져 오기
:
나는
접근을 안드로이드 연락처에있는 모든 변경에 1을 듣고 싶습니다.
ContactsContract.Contacts.CONTENT_URI
및 클래스로 수신하는 브로드 캐스트 수신기 작성 연락처 데이터가 변경 될 때 동기화 어댑터를 시작하기위한 트리거 포인트 역할을하는ContentResolver.requestSync(account,ContactsContract.AUTHORITY,bundle)
을 호출하고 있습니다.모든 그래서 어떻게 접촉에서 델타의 변화받을 수 여기까지하지만 난
onPerofmSync
에SyncResult
변수에 데이터를받지 못하고있어 SyncAdapter 클래스에서 잘 보이는?동기화 어댑터를 트리거하는 방법이 아닌 경우 수정하십시오.
접근법 2 :
나는 그들이dirtyFlag
은 1. 내가 변화를 얻을 수 있었다 로 설정되어있는 연락처 데이터베이스를 쿼리에 대해 얘기했다 몇 가지 예를 따랐다하지만 내 질문은
입니다누가
dirtyFlag
값을 '0'으로 다시 설정합니까?내가해야한다면, 똑같은 일을 전화 상에 여러 개의 응용 프로그램이 있다고 가정 해 봅시다. 내 응용 프로그램이 정보에 액세스하려고하기 전에 일부 응용 프로그램에서 플래그를 '0'으로 설정하는 경우 나는 모든 변화를 놓치고있다.
접근 방법 3 :
쿼리 데이터베이스와 내 자신의 데이터베이스에있는 각 연락처에 대해
version
추적하고 '버전'변경된 경우 것을 고려 접촉의 변화로. 이것은 무거운 과정처럼 보입니다.마지막으로 내 질문은 사용자의 기기에서 연락처의 변경 사항을 청취하는 가장 좋은 방법입니다. 당신이 할 수있는 일
네, 제 질문과 마찬가지로 제 3의 접근법입니다. – Prakash
옙, 내가하는 일은 그렇게 무거운 과정이 아니며 모든 연락처를 거치는 쿼리 없이는이 작업을 수행 할 방법이 없습니다. – marmor
"registerContentObserver (ContactsContract.Contacts.CONTENT_URI"호출의 가장 작은 방아쇠가있을 때마다 변경된 내용을보기 위해 전체 연락처에 대한 쿼리를 수행해야합니다. –