2013-04-24 8 views
13

私のアプリケーションで同期アダプタを使用して、ネイティブとサードパーティの連絡先(FBを除く)をサーバと同期します。 (サーバー片道同期にのみクライアント)androidの同期アダプタに連絡してください

私はここ2つの疑問がある -

1)デバイスで複数の同期アダプタがある場合をし、ダーティビットがすでに別の同期アダプタによってクリアされている場合は、私の同期アダプタを希望連絡先の変更/更新をすぐに検出できるようにします。私は、サーバーとの連絡先を同期する

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

を使用していた

2)。

30秒ごとに同期が開始されます。

ただし、連絡先が追加されたときにすぐに通知を受け取るか、削除または更新してperfromSync操作を開始します。

オブザーバーも使用する必要がありますか?

答えて

3

連絡先の変更を確認するには、オブザーバーをContentResolverに登録する必要があります。同期APIはすべての変更を監視するためのものではなく、Androidが自動的に定期的に実行されるバックグラウンドAPIであり、操作がバッチ処理され、ネットワークが効率的に使用され、ネットワークが無効になったときには実行されません。 ..

ダーティビットは、アカウントごとに使用されます。一般に、同期は連絡先ごとに「所有」アカウントを持つように設計されており、デバイスから特定のサービスにすべての連絡先をエクスポートするようには設計されていません。複数のアカウントからの連絡先をユーザーが見ている1つの「連絡先」に結合する処理を行う集約プロセスがあります。参照:

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

これがどのように機能するかの詳細については。

デバイスのすべての連絡先をサービスにエクスポートする場合は、連絡先を歩き、サービスの生の連絡先を挿入する必要があります。また、オブザーバーでContentResolverを見て、ユーザーが新しい連絡先を何らかのサービスに追加するか、定期的にテーブルを歩いて、まだエクスポートしていない連絡先を探しているかどうかを確認することもできます。

2

バージョンビットを使用してください。任意の接触が を編集した場合は自動的にあなたが現在バージョンに、以前のバージョンを比較するためのローカルデータベースを作成します。1.

増加しました。変更が発生した場合は、更新クエリをトリガします。

詳細については、hereをご覧ください。

このバージョンは同期の更新に役立ちます。だから私はすべての人にこの答えを分かち合う。

関連する問題