2013-04-04 2 views
0

Я использую AbstractThreadedSyncAdapter для синхронизации некоторых данных с моим сервером. Я использую SyncResult, чтобы указать, если была ошибка при выполнении синхронизации:Android SyncAdapter: retry

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" /> 
Смежные вопросы