SyncAdapter 内で、スレッドを終了する直前に cancelRequest() を使用していましたが、進行中の同期をキャンセルしたい別のエンティティ (UI) によってのみ使用されることを意図していると判断しました (時間がかかりすぎて、おっと、等。)
現在、私の同期は、保留中のリクエストが常にあると考えています。これを使用して、新しいリクエストを無視します。
私が行っているもう 1 つのことは、ContactsContract.AUTHORITYへの変更をリッスンしている Service のリスナー スレッドであり、集計の同期を開始できます。
更新: このリスナー スレッドがリークしています。完了したら .stop() を発行していますが、サービスが停止しないように維持していると思われるハンドラーがあります。
保留中、リサイクルなどのためにそのようなものを追跡するエンティティ(つまり、SyncManager)に SyncResults を送信したいと思います。
私は何が欠けていますか?