我想知道当我们在操作onPerformSync()
期间使用对象SyncResult
时SyncManager
的默认行为是什么
例如,当由于IOException
导致同步错误时,我们设置
syncResult.stats.numIoExceptions++
然后 SyncManager
必须管理重新发送同步,直到系统指定的延迟。
但是,如果每次同步都发生 IOException
,那么同步会被重新调用多少次?
每次同步之间的默认延迟设置是多少?
是否可以定义自己的行为?
我在哪里可以找到相关文档?
最佳答案
SyncResult
对象有一个 delayUntil
字段,您可以从您的同步适配器中设置该字段,它将延迟每个后续同步指定的秒数。也许这就是您正在寻找的领域。
否则,同步将被重新安排
SyncResult.madeSomeProgress()
返回 true - 即一些工作已通过同步成功完成(对应于 stats.numDeletes
,stats.numInserts > 0
, stats.numUpdates > 0
)
SyncResult.hasSoftError()
返回 true - 即由于 IOException
或 SyncResult.syncAlreadyInProgress
为 true 而失败。
因此,为了回答您的问题,如果 IOException
在每次同步时发生,SyncManager
将无限次重试 - 使用指数退避。
需要注意的是,同步适配器可以设置 SyncResult.tooManyRetries = true
,这将向 SyncManager
指示不会重新安排同步。
关于android - 同步适配器和同步结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362233/