2011-05-10 50 views
2

因此,我使用自定义syncAdapter服务运行api版本7,该服务调用API web服务来检索同步信息。与此相关的问题是,即使同步已成功并且所有内容都是最新且正常工作,此同步服务也会每隔10-30秒启动一次。Android Sync适配器始终运行

有没有办法为它定义一种退避期?无论如何解决这个问题?我看到了syncresult变量,但没有任何内容表示成功同步或类似的东西。

请帮忙。谢谢。

回答

2

您在SyncAdapter的onPerformSync方法中设置SyncResult变量。你会看到它的onPerformSync方法的参数之一。在那里有一个名为delayUntil的字段,您可以使用它告诉它不要在一定的时间内安排另一个同步。

+0

ye tnx的提示,但不幸的是我不能使用它,因为它在api 8中引入。我正在为7建设。也许我可以使用它与反射,然后只为上面的8。 – DArkO 2011-06-21 19:04:10

+0

啊。我没有使用它,但也许tooManyRetries字段可以帮助。根据文件,这应该防止它被重新安排。看看这里也是:http://stackoverflow.com/questions/5537581/when-syncadapter-runs-synchronization-on-android。您是否可能无意中通过调用notifyChange同步标志为真来导致同步? – maxpower47 2011-06-21 19:07:52

+0

我也看到了这篇文章。我所做的实际上是在共享首选项中用最后一次同步时间保存时间戳,如果新旧版本之间的时间间隔小于15分钟,则不允许同步。这似乎解决了不断运行的服务。它会在第一次运行到间隔检查后再次启动时停止。但我仍然允许它与手动同步标志运行绕过检查。 – DArkO 2011-06-21 19:25:16