The SyncResult object has a delayUntil field, which you can set from the synchronization adapter, which will delay each subsequent synchronization for the specified number of seconds. Perhaps this is the field you are looking for.
Otherwise, the synchronization will be postponed if
SyncResult.madeSomeProgress() returns true - that is, some work was successfully performed by synchronization (corresponding to stats.numDeletes , stats.numInserts > 0 , stats.numUpdates > 0 )
SyncResult.hasSoftError() returns true, i.e. Failure due to an IOException or because the value of SyncResult.syncAlreadyInProgress true.
So, to answer your question, if an IOException occurs at every synchronization, SyncManager will repeat infinity - with exponential deviation.
The caveat is that the synchronization adapter can set SyncResult.tooManyRetries = true , which will indicate to SyncManager that the synchronization will not be rescheduled.
43matthew
source share