【问题标题】:SyncAdapter without ContentObserver没有 ContentObserver 的 SyncAdapter
【发布时间】:2016-06-01 03:08:01
【问题描述】:

我最近了解到,当使用带有 CursorLoaders 的 ContentProvider 时,无需创建自己的 ContentObserver,只需调用 cursor#setNotificationUri() 或 getContext().getResolver().notifyChange。现在我想使用 SyncAdapter 对数据更改执行同步,对此的要求是为各个 URI 提供一个 ContentObserver,我的问题是,这会对上述监听数据更改的方式产生什么影响?

【问题讨论】:

    标签: android-contentresolver android-syncadapter


    【解决方案1】:

    在使用 SyncAdapter 时,您不需要 ContentObserver 来触发同步。只需确保在调用 notifyChange (Uri uri, ContentObserver observer, boolean syncToNetwork) 时将 syncToNetwork 设置为 true。

    Android 将自动为此权限调用所有将 supportsUploading 设置为 true 并配置为自动同步的 SyncAdapter。

    【讨论】:

    • 但是 cursor.setNotificationUri 方法没有 syncToNetwork 参数,这种情况我该怎么办?
    • 这无关紧要。那只是通知光标有关更改,因此 UI 可以立即更新自身。您的 ContentProvider 应将 syncToNetwork 设置为 true ,只要有可能需要同步的更改(因此您只需在插入、更新和删除操作时进行设置)。请注意,当 SyncAdapter 更改某些内容时,不应将其设置为 true(因为这可能会导致循环)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多