2012-03-12 3 views
3

Android 동기화 프레임 워크와 동기화를 수행 할 애플리케이션을 설정했습니다. 대부분의 내부 부품은 동기화 어댑터 데모에서 가져 왔습니다. 아주 간단한 질문이 있는데,이 앱은 언제 동기화됩니까? 네트워크를 "간질"받을 때 Google 서비스가 동기화된다는 것을 알고 있습니다. 동기화하려는 서비스가있는 경우도 마찬가지입니까?Android 앱 동기화 일정

답변

5

Amorgos는 언급 한 간지럼에 C2DM 푸시 메시지가 언급되어 있습니다. 변경 사항을 클라우드에서 작성한 후 즉시 변경 사항을 동기화하는 것이 중요하다면 변경 사항을 구현해야한다고 생각해야합니다. 자세한 내용은 here을 참조하십시오.

동기화 작업을 요청하려면 사용자가 살펴야 할 클래스가 ContentResolver입니다. requestSync (계정 계정, 문자열 권한, 번들 추가 기능) (지금 동기화 버튼 또는 유사하게 사용)을 호출하려는 경우. 귀하의 컨텐트 프로의 변화는 (트리거됩니다 거짓없이 동기화와 진정한 교체를 동기화 할 수 없습니다해야 변경) 항목을 변경/생성 한 후

getContentResolver().notifyChange(CONTENT_URI, null, true); 

를 호출 할 수 있습니다 동기화합니다. android : supports SyncAdapter의 xml 파일에있는 업로드가 true로 설정되어 있으면 동기화가 자동으로 트리거됩니다. 이 경우 SyncAdapter의 번들에는 ContentResolver .SYNC_EXTRAS_UPLOAD의 부울 값이 포함되어 있습니다. 이 기능을 사용하여 로컬 변경 사항을 클라우드에 동기화하고 아무 것도 쿼리하지 않을 수 있습니다.

각 시간을 동기화하려면 addPeriodicSync (계정 계정, 문자열 권한, 번들 추가, 긴 pollFrequency)을 사용하십시오.

또한 ContentResolver를 사용하여 동기화해야하는지 여부를 읽을 수 있습니다 (계정 & 동기화의 장치 설정에 표시된 값). 메소드는 getIsSyncable (...)입니다. setIsSyncable (...)입니다.

이 정보가 도움이되기를 바랍니다.

편집 : 이 또한 정말 좋은 프로세스를 설명합니다 Why does ContentResolver.requestSync not trigger a sync?

1

모두 응용 프로그램의 요구 사항에 따라 다릅니다. 사용자가 중요하다고 생각하지 않는 데이터를 즉시 동기화하는 경우 동기화를 시작하는 OS로 충분할 수 있습니다. 연락처의 목록은 이에 대한 완벽한 예입니다.

앱이 실시간 방식으로 알림을받는 데 의존하는 경우 C2DM 푸시 알림을 사용하여 동기화 프로세스를 시작하는 것이 좋습니다. 서버가 데이터를 수정하여 장치로 보낼 때 C2DM 메시지를 발생시킬 수 있습니다. 앱은이 메시지 내용을 기반으로 동기화 프로세스를 실행합니다. (C2DM은 예를 들어 Gmail에서 참조하는 네트워크 간지입니다.)

어떤 방식 으로든 동기화를 효율적으로 시작할시기를 결정하려면 응용 프로그램을 설계해야합니다. 모든 앱은 동기화 요구 사항이 다릅니다.