cursor.setNotificationUri() 和 getContentResolver().notifyChange(uri,null) 之间的区别

Difference between cursor.setNotificationUri() and getContentResolver().notifyChange(uri,null)

我是 android 的新手,谁能告诉我在实施内容提供程序时 cursor.setNotificationUri()getContentResolver().notifyChange(uri,null) 有什么区别。

我看到 cursor.setNotificationUri()query() 方法中使用,并且在更新或插入时使用 getContentResolver().notifyChange()

我不太了解 getContentResolver().notifyChange() 通知解析器某些数据已更改,但 cursor.setNotificationUri() 在那里做什么?

它们是共生的。如果你正在实现一个 ContentProvider,基本上当有人查询你的提供者时,你会产生一个 Cursor 并用一些合理的 Uri 调用 setNotificationUri() (例如 Uri 用于进行查询)。稍后,如果您的 ContentProvider 提供的数据发生变化,例如在 insert/update/delete 之后,您调用 getContentResolver().notifyChange(uri, null) 以便当前拥有 Cursor 的任何人(因为他们之前查询过)都会收到通知,数据已更改,他们应该重新查询。如果他们使用 CursorLoader,重新查询会自动发生。