我想知道当我们在onPerformSync()操作期间使用对象SyncResult时,SyncManager的默认行为是什么
例如,当同步由于IOException而出错时,我们设置
syncResult.stats.numIoExceptions++则SyncManager必须管理重新发送同步,直到系统指定的延迟。
但是,如果IOException在每次同步时都准确,那么同步会被重新调用多少次?每次同步之间的默认延迟设置是多少?有没有可能定义自己的行为?我在哪里可以找到关于这方面的文档?
发布于 2013-06-28 07:18:33
SyncResult对象有一个delayUntil字段,您可以从同步适配器设置该字段,该字段将使每次后续同步延迟指定的秒数。也许这就是你要找的领域。
否则,如果出现以下情况,则将重新安排同步
SyncResult.madeSomeProgress()返回true -即同步成功完成了某些工作(对应于stats.numDeletes、stats.numInserts > 0、stats.numUpdates > 0)
SyncResult.hasSoftError()返回true -即由于IOException或因为SyncResult.syncAlreadyInProgress为true而失败。
因此,为了回答您的问题,如果在每次同步时都出现IOException,则SyncManager将无限期地重试ad -并具有指数回退。
对此的警告是,同步适配器可以设置SyncResult.tooManyRetries = true,这将向SyncManager指示不重新调度同步。
发布于 2014-03-21 05:05:58
初始重试时间:
/**
* 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来通知框架停止重试同步。
https://stackoverflow.com/questions/11362233
复制相似问题