5

SyncAdapter 内で、スレッドを終了する直前に cancelRequest() を使用していましたが、進行中の同期をキャンセルしたい別のエンティティ (UI) によってのみ使用されることを意図していると判断しました (時間がかかりすぎて、おっと、等。)

現在、私の同期は、保留中のリクエストが常にあると考えています。これを使用して、新しいリクエストを無視します。

私が行っているもう 1 つのことは、ContactsContract.AUTHORITYへの変更をリッスンしている Service のリスナー スレッドであり、集計の同期を開始できます。

更新: このリスナー スレッドがリークしています。完了したら .stop() を発行していますが、サービスが停止しないように維持していると思われるハンドラーがあります。

保留中、リサイクルなどのためにそのようなものを追跡するエンティティ(つまり、SyncManager)に SyncResults を送信したいと思います。

私は何が欠けていますか?

4

2 に答える 2

10

シャンティの答えを例で詳しく説明するには:

SyncResult の設定例を次に示します。統計フィールドに例外の数を設定するために使用します。その結果、[アカウントと同期] 画面でその同期項目のエラー アイコンが表示されます。

于 2011-06-21T14:38:09.587 に答える
1

SyncResultを使用できます。このクラスは、同期操作の結果を SyncManager に伝えるために使用されます。ここの値に基づいて、SyncManager は同期の処理を決定し、将来新しい同期操作をスケジュールする必要があるかどうかを決定します。

于 2011-05-02T06:53:09.587 に答える