【问题标题】:Do Query Parameters affect ContentResolver notifyChange查询参数是否影响 ContentResolver notifyChange
【发布时间】:2012-06-21 16:50:52
【问题描述】:

我正在对我的ContentProvider 使用查询参数,当请求来自同步适配器时,我可以通知它,以便它可以执行诸如确保不触发网络同步之类的事情。我正在使用CursorLoaderLoaderManagerCursor 附加到CursorAdapter 中的CursorAdapter - 基础知识。正在提供的数据库通过 Sync Adapter 进行更新,因此通知将使用 Sync Adapter 使用的 URI(带有附加查询参数的那个)。当我在重置加载程序之前让同步适配器完成时,我会在ListView 中获得适当的数据,但是如果我在某些数据仍在同步时尝试重置加载程序,我会得到当时数据库中的内容数据下载完成后不通知重置。

我没有找到任何关于查询参数是否会影响谁收到ContentResolver.notifyChange(Uri, ContentObserver, boolean) 通知的答案。所以我正在努力解决这个问题,但如果有人能在我弄清楚之前回答这个问题,那将不胜感激。需要明确的是,当请求者不是ContentProvider.query(...) 中的同步适配器时,我的ContentProvider 正在调用cursor.setNotificationUri(getContext().getContentResolver(), uri)。当请求者是ContentProvider.insert/update/delete/bulkInsert(...) 中的同步适配器时,它使用触发请求的URI 调用getContext().getContentResolver().notifyChange(uri, null, false)

【问题讨论】:

    标签: android cursor android-contentprovider android-loadermanager


    【解决方案1】:

    答案似乎是“不,查询参数似乎没有包含在关于在 notifyChange(...) 调用上通知哪些 URI 的规范中,或者更确切地说,ContentObserver 正在自动注册自己以接收所有后代 URI 通知也一样。”

    我的问题似乎是我无意中仍在使用在另一个问题中实现的SimpleCursorLoader,以提供不依赖于ContentProviderCursorLoader 实现。我现在使用的是ContentProvider,所以我更改为默认的CursorLoader,这似乎已经解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多