首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SyncAdapter和SyncResult

SyncAdapter和SyncResult
EN

Stack Overflow用户
提问于 2012-07-06 20:29:17
回答 2查看 4.3K关注 0票数 9

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

例如,当同步由于IOException而出错时,我们设置

代码语言:javascript
复制
syncResult.stats.numIoExceptions++

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

但是,如果IOException在每次同步时都准确,那么同步会被重新调用多少次?每次同步之间的默认延迟设置是多少?有没有可能定义自己的行为?我在哪里可以找到关于这方面的文档?

EN

回答 2

Stack Overflow用户

发布于 2013-06-28 07:18:33

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

否则,如果出现以下情况,则将重新安排同步

SyncResult.madeSomeProgress()返回true -即同步成功完成了某些工作(对应于stats.numDeletesstats.numInserts > 0stats.numUpdates > 0)

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

因此,为了回答您的问题,如果在每次同步时都出现IOException,则SyncManager将无限期地重试ad -并具有指数回退。

对此的警告是,同步适配器可以设置SyncResult.tooManyRetries = true,这将向SyncManager指示不重新调度同步。

票数 7
EN

Stack Overflow用户

发布于 2014-03-21 05:05:58

初始重试时间:

代码语言:javascript
复制
/**
 * 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来通知框架停止重试同步。

来源:SyncManager.java

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11362233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档