2012-03-20 61 views
2

我有一个应用程序使用SyncAdapter对远程服务器进行REST调用,然后使用Content Provider将更新持久保存到本地SQLLite数据库。系统如何触发SyncAdapter?

我可以触发转到帐户&同步,通话然后选择我的适配器,并使用重新同步按钮,触发呼叫

系统如何知道什么时候(频率),使onPerformSync()在SyncAdapter中调用?

我正在登录REST呼叫解决的服务,但我没有看到任何呼叫,除非我如上所述手动执行。

顺便说一句,我在此刻的仿真器正在运行,我还没有在设备上安装了这个尚未

回答

1

从您的ContentProvider你必须让你的SyncAdapter知道有一个变化的数据集。 。

通过调用notifyChange()

例如您ContentProviders中插入()方法做到这一点:

的getContext()getContentResolver()有NotifyChange(rowUri,NULL);

它可能不会马上同步,但这正是SyncAdapters的工作原理。系统决定何时是同步的好时机。通常我的经验发生得相对较快。当然,您可能不希望它每次都在数据库中发生更改时同步,但您始终可以将代码放入performSync以控制同步的频率。

希望这可以帮助别人:)