2014-01-22 37 views
3

更新數據庫中的記錄後,會觸發SyncAdapter以將更改上傳到服務器。 但是,如果上傳失敗,我該如何告知SyncManager重複同步? 我試過設置syncResult.fullSyncRequested = true但沒有任何反應。 從SyncAdapter內部我需要ContentResolver.requestSync()嗎?Android - 如何在失敗時重新安排同步請求

回答

2

既然你說你的同步失敗了,我猜你可能在你的SyncResult.stats中設置了一些錯誤指示字段。嘗試清除它們。

我有完全相同的問題,此代碼

syncResult.stats.numAuthExceptions++; 
syncResult.fullSyncRequested = true; 
AccountManager.get(getContext()).invalidateAuthToken(account.type, token); 
return; 

和去除numAuthExceptions++使它立即重新安排,如預期。

文檔說約fullSyncRequested

如果設置SyncManager將請求立即同步與作爲同步請求使用相同的賬戶和權限(但空額外包)。

但是,看看SyncManager source我認爲它實際上符合指數退避和指定的最小延遲。不知道這是否是一個錯誤,或者我只是誤解了(有點稀疏)關於同步的文檔。

0

我發現的是fullSyncRequested不會立即安排重新同步,但會遵守退避算法。另外如果SyncResult#hasSoftError需要返回true看起來。