我有一个应用程序,它使用 SyncAdapter 对远程服务器进行 REST 调用,然后使用内容提供程序将更新保存到本地 SQLLite 数据库。
我可以通过转到“帐户与同步”来触发调用,然后选择我的适配器,然后使用“重新同步”按钮触发调用
系统如何知道何时(多久)在 SyncAdapter 中调用 onPerformSync()?
我正在登录 REST 调用解析到的服务,但我没有看到任何调用,除非我如上所述手动执行此操作。
顺便说一句,我现在正在模拟器中运行,我还没有在设备上安装它
最佳答案
您必须从您的 ContentProvider 让您的 SyncAdapter 知道数据集发生了变化。
您可以通过调用 notifyChange() 来完成此操作
例如在您的 ContentProviders insert() 方法中:
getContext().getContentResolver().notifyChange(rowUri, null);
它可能不会立即同步,但这就是 SyncAdapter 的工作方式。系统决定何时是同步的好时机。根据我的经验,通常它发生得相对较快。当然,您可能不希望每次数据库发生更改时都进行同步,但您始终可以将代码放入 performSync 中以控制同步频率。
希望这对某人有帮助:)
关于android - 系统如何触发 SyncAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790060/