【问题标题】:How is a SyncAdapter triggered by the system?系统如何触发 SyncAdapter?
【发布时间】:2012-03-20 15:44:01
【问题描述】:

我有一个应用程序,它使用 SyncAdapter 对远程服务器进行 REST 调用,然后使用内容提供程序将更新持久保存到本地 SQLLite DB。

我可以通过进入 Accounts & Sync,然后选择我的适配器并使用 Resync 按钮触发呼叫来触发呼叫

系统如何知道何时(多久)在 SyncAdapter 中调用 onPerformSync()?

我正在登录 REST 调用解析到的服务,但我看不到任何调用,除非我按照上述手动执行此操作。

顺便说一句,我现在正在模拟器中运行,我还没有在设备上安装它

【问题讨论】:

    标签: android


    【解决方案1】:

    您必须通过 ContentProvider 让 SyncAdapter 知道数据集发生了变化。

    你可以通过调用notifyChange()来做到这一点

    例如在您的 ContentProviders insert() 方法中:

    getContext().getContentResolver().notifyChange(rowUri, null);

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

    希望这可以帮助某人:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      相关资源
      最近更新 更多