当ContentResolver.notifyChange()为给定的URI调用时,是否会通知观察到该URI的后代URI



一个有希望的简单问题:当ContentResolver.notifyChange()为给定的URI被调用时,ContentObserver观察到该URI的后代 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);

我的Cursor,注册观察uriA,会被通知吗?

这取决于它的注册方式。如果注册ContentObserver时,notifyForDescendents参数设置为true,则是。否则没有。

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

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

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

最新更新