16

一个有希望的直截了当的问题:何时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,会收到通知吗?

4

2 回答 2

30

这取决于它是如何注册的。如果ContentObserver注册了notifyForDescendents参数设置为真,那么是的。否则没有。

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

void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)
于 2014-01-28T21:28:26.930 回答
12

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

于 2011-07-21T20:38:44.633 回答