我有一个应用程序,该应用程序使用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/

10-10 17:23