内容观察者 - 简直不敢相信我读过的内容



我已经阅读了相关的问答;我不敢相信,如果我的自定义内容提供商这样做:

insertUri = ContentUris.withAppendedId( Data2TableMetaData.CONTENT_URI, rowId)
// notify listeners
getContext().getContentResolver().notifyChange(insertUri, null);

ContentObserver无法检索rowId。

这真的对吗?我想我一定是错过了什么,因为这看起来不太好。

你是对的。回调接口不包含更改内容的信息,只包含发生了更改的信息。但一般来说,我们鼓励开发人员使用CursorLoaders之类的东西,它们可以为您完成所有繁重的工作。http://developer.android.com/reference/android/content/CursorLoader.html

然而,现在有了新的Android16api,就可以在OnChange方法中检索行的URI。

在api级别16中,ContentObserver确实接收到了具有rowId的uri。然而,在此之前,对于插入一行但只想侦听该rowId的情况,一旦知道了rowId,就可以在插入后立即调用ContentResolver.registerContentObserver。

相关内容

最新更新