我正在使用ContentProvider
的查询参数,该参数允许我在请求来自同步适配器时通知它,以便它可以执行诸如确保不触发同步到网络之类的操作。我正在CursorLoader
使用LoaderManager
将Cursor
附加到CursorAdapter
中的ListView
- 基础知识。正在提供的数据库通过同步适配器进行更新,因此通知将使用同步适配器使用的URI(带有附加查询参数的URI)。当我在重置加载器之前完成同步适配器后,我在ListView
中获得了相应的数据,但是如果我尝试重置加载器,而某些数据仍在同步中,我会得到数据库中的数据。那个时间,并且在数据下载完成后没有通知重置。
我没有找到任何答案,如果查询参数会影响通知ContentResolver.notifyChange(Uri, ContentObserver, boolean)
的人。所以我正试图解决这个问题,但如果有人能在我弄清楚之前回答这个问题,那将非常感激。要明确的是,当请求者不是ContentProvider
中的同步适配器时,cursor.setNotificationUri(getContext().getContentResolver(), uri)
正在调用ContentProvider.query(...)
。当请求者是getContext().getContentResolver().notifyChange(uri, null, false)
中使用触发请求的URI的同步适配器时,它会调用ContentProvider.insert/update/delete/bulkInsert(...)
。
答案 0 :(得分:2)
答案似乎是“不,查询参数似乎不包含在notifyChange(...)
呼叫中通知哪些URI的规范中,或者ContentObserver
自动注册接收所有后代URI通知。“
我的问题似乎是我无意中仍在使用在另一个问题中实施的SimpleCursorLoader
来提供不依赖于CursorLoader
的{{1}}实施。我现在使用ContentProvider
,因此我更改为默认ContentProvider
,这似乎解决了问题。