2

我对 contentProvide 中使用的 notifyChange 机制感到困惑:

// Tell the cursor what uri to watch, so it knows when its source data changes
        c.setNotificationUri(getContext().getContentResolver(), uri);

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

以下是问题(假设提供者和客户端在不同的包中):

  1. Provider返回的contentResolver和客户端返回的Resolver一样吗?
  2. 提供者和客户端返回的游标是否相同?
  3. 要通知更改的 Uri 分辨率是什么?整个表 uri 还是一行?

请说清楚

4

1 回答 1

0

我知道这是一个老问题。我正在回答,以便对遇到这个问题的人有所帮助。

  1. Provider返回的contentResolver和客户端返回的Resolver一样吗?

是的,它是一样的。

  1. 提供者和客户端返回的游标是否相同?

我想,您是在查询()方法中看到的第一个代码片段的上下文中提出这个问题的。在这里,您在要返回给客户端的光标上设置通知 uri。所以,很明显,客户端和提供者使用的是同一个游标。

  1. 要通知更改的 Uri 分辨率是什么?整个表 uri 还是一行?

通知的 Uri 取决于操作:

  1. insert() - 通知 Uri 是表 Uri 附加了新插入行的 id。

  2. delete() 和 update() - 这里的 Uri 是表 Uri 附加了已删除或更新行的 id。

于 2015-09-28T12:31:52.470 回答