当调用ContentResolver.notifyChange()来通知特定URI时,是否会通知观察此URI子级URI的ContentObserver?

16
希望很简单的问题:当调用ContentResolver.notifyChange()时,是否会通知观察此URI的ContentObserver所观察的后代 URI?
例如,假设我已经设置了一个游标来观察特定资源的URI:
 Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21");
 cursor.setNotificationUri(getContext().getContentResolver(), uriA);

我随后通知ContentResolver,此URI的祖先已更改(例如,因为我已删除了所有订单):

 Uri uriB = Uri.parse("content://" + AUTHORITY + "/orders");
 getContext().getContentResolver().notifyChange(uriB, null);

如果我注册了一个观察 uriACursor,那么它会被通知吗?

2个回答

30

这取决于它是如何注册的。如果使用notifyForDescendents参数设置为true进行注册,则是的。否则不是。

注册是通过方法ContentResolver#registerContentObserver完成的:

void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

12

经过测试,简单回答:是的。


6
我相信我的答案更加准确。您可以接受它或将其纳入您自己的答案中吗?我感觉人们经常不会查看已被接受的答案之外的内容。 - Xiao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接