2013-04-04 73 views
0

我正在使用AbstractThreadedSyncAdapter與我的服務器同步某些數據。我使用SyncResult,表示如果有是一個錯誤,而執行同步:Android SyncAdapter:重試

syncResult.stats.numParseExceptions++; 

我初始化這樣的SyncAdapter:

Bundle params = new Bundle(); 
params.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false); 
params.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false); 
params.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false); 
ContentResolver.addPeriodicSync(account, CONTENT, params, 3600); 
ContentResolver.setSyncAutomatically(account, CONTENT, true); 
ContentResolver.requestSync(account, CONTENT, new Bundle()); 

如果同步失敗,我希望它在5分鐘後重試(週期同步時間爲1小時)。我認爲我必須使用syncResult.delayUntil,但同步不會重試。

我該怎麼辦?

回答

0

文檔說的:(http://developer.android.com/reference/android/content/ContentResolver.html#addPeriodicSync(android.accounts.Account,java.lang.String中,android.os.Bundle,長))

定期同步不允許有任何SYNC_EXTRAS_DO_NOT_RETRY,SYNC_EXTRAS_IGNORE_BACKOFF,SYNC_EXTRAS_IGNORE_SETTINGS,SYNC_EXTRAS_INITIALIZE,SYNC_EXTRAS_FORCE的, SYNC_EXTRAS_EXPEDITED,SYNC_EXTRAS_MANUAL設置爲true。如果有任何提供,則會拋出IllegalArgumentException。

也許就是這個問題。嘗試刪除這個參數 - 可能工作。寫如果有幫助。

或者你忘了權限:

<uses-permission android:name="android.permission.READ_SYNC_STATS" /> 
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />