SyncAdapter和SyncResult

use*_*356 9 android synchronization

我想知道在操作期间SyncManager使用对象时的默认行为SyncResultonPerformSync()

例如,当IOException我们设置同步因错误时

syncResult.stats.numIoExceptions++
Run Code Online (Sandbox Code Playgroud)

然后SyncManager必须管理重新发送同步,直到系统指定延迟.

但是,如果IOException每个同步的诅咒,同步重新调用多少次?每次同步之间的默认延迟设置是多少?这有可能定义自己的行为吗?我在哪里可以找到相关文档?

43m*_*hew 7

SyncResult对象有一个delayUntil字段,您可以从同步适配器设置该字段,该字段将延迟每个后续同步指定的秒数.也许这是你正在寻找的领域.

否则,如果是,将重新安排同步

SyncResult.madeSomeProgress()返回true -即一些工作成功地被同步完成(对应于stats.numDeletes,stats.numInserts > 0,stats.numUpdates > 0)

SyncResult.hasSoftError()返回true - 即由于a IOException或因为SyncResult.syncAlreadyInProgress是真的而失败.

因此,要回答您的问题,如果IOExceptions在每次同步时发生,那么SyncManager将无限重试 - 使用指数退避.

需要注意的是,同步适配器可以设置SyncResult.tooManyRetries = true哪个将指示SyncManager同步不会被重新安排.