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