Android 同步适配器&;同步结果
我想知道在操作过程中使用对象Android 同步适配器&;同步结果,android,synchronization,Android,Synchronization,我想知道在操作过程中使用对象SyncResult时SyncManager的默认行为是什么onPerformSync() 例如,当同步由于IOException而出错时,我们设置 syncResult.stats.numIoExceptions++ 然后,SyncManager必须管理重新发送同步,直到系统指定的延迟 但是,如果每次同步时出现IOExceptionaccurs,则重新调用同步的次数是多少? 每次同步之间设置的默认延迟是多少? 这可以定义它自己的行为吗? 在哪里可以找到相关文档?S
SyncResult
时SyncManager
的默认行为是什么onPerformSync()
例如,当同步由于IOException
而出错时,我们设置
syncResult.stats.numIoExceptions++
然后,SyncManager
必须管理重新发送同步,直到系统指定的延迟
但是,如果每次同步时出现IOException
accurs,则重新调用同步的次数是多少?
每次同步之间设置的默认延迟是多少?
这可以定义它自己的行为吗?
在哪里可以找到相关文档?SyncResult对象有一个
delayUntil
字段,您可以从同步适配器中设置该字段,该字段会将随后的每次同步延迟指定的秒数。也许这就是你要找的领域
否则,如果出现以下情况,将重新安排同步:
SyncResult.madeSomeProgress()
返回true-即,一些工作通过同步成功完成(对应于stats.numDeletes
,stats.numInserts>0
,stats.numUpdates>0
)
SyncResult.hasSoftError()
返回true-即由于IOException
或因为SyncResult.syncAlreadyInProgress
为true而失败
因此,为了回答您的问题,如果每次同步时都出现IOException
s,那么SyncManager
将无限期地重试,并进行指数退避
需要注意的是,同步适配器可以设置
SyncResult.tooManyRetries=true
,这将向SyncManager
指示不重新调度同步。初始重试时间:
/**
* When retrying a sync for the first time use this delay. After that
* the retry time will double until it reached MAX_SYNC_RETRY_TIME.
* In milliseconds.
*/
private static final long INITIAL_SYNC_RETRY_TIME_IN_MS = 30 * 1000; // 30 seconds
通过将SyncResult\tooManyRetries
设置为true
,可以告诉框架停止重试同步
来源:我已启用加密。。。如果没有键,我希望syncadpater稍后触发同步。同步延迟没有确定的时间。我们如何才能做到这一点?