2011-04-26 41 views
5

我在我的SyncAdapter中使用了cancelRequest(),就在它退出它的線程之前,但是我之後決定只打算被另一個想要取消同步進程的實體(UI)使用(花費太長時間,哎呀等)如何向Sync SyncManager發送同步完成信號?

現在我的同步認爲總是有一個掛起的請求 - 我用來忽略新的請求。

我正在做的另一件事是服務中的監聽線程正在監聽ContactsContract.AUTHORITY的更改,以便啓動我的聚合同步。

更新:此偵聽器線程正在泄漏。我正在發佈一個.stop(),但是,我認爲有一個處理程序可以保持活動狀態並使服務停止。

我想送SyncResults一些實體(即SyncManager)跟蹤這樣的事情待處理,回收等

我缺少什麼?

回答

1

您可以使用SyncResult該類用於將同步操作的結果傳送給SyncManager。基於這裏的值SyncManager將決定同步的配置,以及是否需要在未來

+1

好的,文檔含糊不清,看着Google的來源不是很有啓發性。我已經查找了與SyncAdapter一起使用此類的示例代碼,但未成功。你能展示一些示例代碼嗎?我可以實例化和修改,但我不知道如何關聯帳戶併發送到SyncManager?那有意義嗎? – mobibob 2011-05-03 02:10:15

+1

我曾嘗試在我的應用程序中設置SyncResult,但我沒有看到效果。 – mobibob 2011-05-20 18:00:48

10

調度的新的同步操作與例如在shunty的回答闡述:

這裏是一個example設置SyncResult。我只是用它來設置統計字段中的例外數量。然後我看到的結果是在帳戶&同步屏幕中顯示該同步項目的錯誤圖標。

+1

好的 - 我的困惑(關注)是設置SyncResult,這是一個「輸入」參數,副作用編程。我希望在onPerformSync結束後,我可以將SyncResult發送到SyncManager或CP等,以便將其記錄下來。 – mobibob 2011-06-21 16:42:34

+1

我同意,它是一件糟糕的事情,但這就是它被設計用於這裏的原因。 – maxpower47 2011-06-21 18:29:17