2013-04-14 5 views
14

계정 관리자와 동기화를 사용하는 웹 서비스에 연결된 앱을 사용하여 사용자가 앱을 통해 계정에 로그인하고 데이터를 동기화 할 수 있습니다. 이는 맞춤 계정이나 Google 계정에서 사용하는 연락처가 아닌 맞춤 데이터입니다. AFAIK, 나는 내가해야 할 모든 것을하고있다. 사용자가 우리의 API를 통해 로그인 할 때, 나는 안드로이드 같은 관리자에 자신의 계정을 저장 : 나는 ACCOUNT_TYPE을 정의사용자 정의 유형의 계정을 추가/제거 할 때마다 Android가 Google 계정을 동기화하는 이유는 무엇입니까?

AccountManager am = AccountManager.get(context); 
m.addAccountExplicitly(new Account(username, ACCOUNT_TYPE), account_id, user_data); 

다른 모든 계정과 구별하기에 충분해야한다 응용 프로그램의 패키지 이름, 수 유형.

즉시 계정이 추가 될 때, I 자동 동기화를 위해 설정 :

ContentResolver.setSyncAutomatically(account, AUTHORITY, true); 
ContentResolver.addPeriodicSync(account, AUTHORITY, new Bundle(), SYNC_FREQUENCY_SECONDS); 

I 정의한 SYNC_FREQUENCY_SECONDS를 86400 (즉, 1 일)로.

마찬가지로 사용자가 로그 아웃하면 AccountManager에서 계정을 검색하고 removeAccount()를 호출하여 계정을 제거합니다. 좋고 간단합니다.

동기화는 내 자체 코드를 통해 수행됩니다. 모든 사용자 정의 데이터가 동기화되고 모든 것이 잘 작동하기 때문입니다. 그러나 나를 미치게 만드는 원인은이 코드를 사용하여 (내 유형의) 계정을 추가하거나 제거 할 때마다 즉시 장치의 모든 Google 계정 동기화를 트리거한다는 것입니다. 즉, 내 데이터를 동기화하기 전에 모든 이메일, 캘린더 데이터, 주소록, Google Play 매거진, Google+ 데이터 및 사진 등 등을 동기화해야합니다. 몇 분 정도 걸릴 수 있습니다. 데이터 동기화를 위해 참을성있게 기다리고 있습니다. 매우 불만 스럽습니다. 사용자가 로그인 한 후 데이터를 동기화하는 데 너무 오래 걸리는 이유를 사용자가 이해하는 것은 어려울 것입니다. (많은 데이터를 동기화 할 때 전화가 느린 경향이 있다는 사실은 말할 것도 없습니다 거의 반응이없는 지점까지).

여기 뭔가 잘못 되었나요? 내 코드에 실수로 Android에 "지금 Google 데이터를 모두 동기화하고 동기화하십시오!"라는 메시지가 표시됩니다. 또는 Google의 계정/동기화 프레임 워크에 내재되어있는 것입니까?

+1

자동 동기화를 사용하지 않으면 (사용하도록 설정된 경우) 사용자 지정 계정을 추가/제거하고 트릭을 다시 활성화 하시겠습니까? –

+0

흥미로운 아이디어. 나는 그것을 시도 할 것이다. –

답변

2

저는 이것이 절전 기능이라고 생각합니다 (100 % 확실하지는 않습니다). 라디오는 전송이 끝난 후 잠시 동안 대기 전원 상태로 유지되므로 하나의 긴 전송을 전송하면 대기 상태에 머무는 것을 피할 수 있기 때문에 배터리를 효율적으로 사용할 수 있습니다 (본질적으로 낭비입니다. 힘)를 한 번 이상. 따라서 동기화 인프라가 가능한 한 많은 동기화를 함께 수행하려고합니다.

처음 동기화의 대기 시간이 염려되는 경우 주기적 자동 동기화 이외에 더 빠른 시간에 처음으로 동기화를 수동으로 요청할 수 있습니다.