2016-11-08 62 views
2

我是新来的android任何人都可以告诉我在实现内容提供者时cursor.setNotificationUri()getContentResolver().notifyChange(uri,null)之间有什么区别。Dilerence between cursor.setNotificationUri()and getContentResolver()。notifyChange(uri,null)

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

我几乎没有理解getContentResolver().notifyChange()通知解析器某些数据已被更改,但cursor.setNotificationUri()在那里做什么?

+1

可能的重复[什么是cursor.setNotificationUri()用于?](http://stackoverflow.com/questions/21623714/what-is-cursor-setnotificationuri-used-for) – XGouchet

回答

13

它们是共生的。如果您正在实施ContentProvider,基本上当有人查询您的提供商时,您生成Cursor并呼吁setNotificationUri()与一些合理的Uri(例如用于进行查询的Uri)。稍后,如果您的ContentProvider所服务的数据发生变化,例如在插入/更新/删除之后,您可以拨打getContentResolver().notifyChange(uri, null),以便任何当前拥有Cursor(因为他们之前被查询)的人得到通知数据已更改并且应该重新查询。如果他们正在使用CursorLoader,则重新查询会自动发生。

+0

感谢兄弟明确我的疑问。 – FaisalAhmed

+0

我注意到一件事,如果你在query()方法中不使用'setNotificationUri()'而在update/delete/insert方法中使用'notifyChange()',你的Content Provider仍然可以工作。 – CopsOnRoad

相关问题