android - 同步适配器和同步结果

标签 android synchronization

我想知道当我们在操作onPerformSync()期间使用对象SyncResultSyncManager的默认行为是什么

例如,当由于IOException导致同步错误时,我们设置

syncResult.stats.numIoExceptions++

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

但是,如果每次同步都发生 IOException,那么同步会被重新调用多少次? 每次同步之间的默认延迟设置是多少? 是否可以定义自己的行为? 我在哪里可以找到相关文档?

最佳答案

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

否则,同步将被重新安排

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

SyncResult.hasSoftError() 返回 true - 即由于 IOExceptionSyncResult.syncAlreadyInProgress 为 true 而失败。

因此,为了回答您的问题,如果 IOException 在每次同步时发生,SyncManager 将无限次重试 - 使用指数退避。

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

关于android - 同步适配器和同步结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362233/

相关文章:

java - 使用相同 key 解密 AES 时出现 BadPaddingException

file - unison 如何决定同步文件的方式

java - 为什么线程在不同的运行方法体中表现不同?

c - 信号量初始化

android - 将普通 View 转换为 GLSurfaceView 的教程

android - 共享大约 90% 源代码的多个 Android 应用程序怎么办?

java - AES256 加密

java - 虚假唤醒、wait() 和 notifyAll()

java - 如何使用 objectId 或 hashcode 对对象进行同步?

android - 强制 Phonegap(Android) 启动画面方向