当为给定的URI调用ContentResolver.notifyChange()时,ContentObservers是否会通知此URI的后代URI?

时间:2011-07-13 11:20:09

标签: android uri android-contentprovider android-contentresolver contentobserver

一个有希望直截了当的问题:当为给定的URI调用ContentResolver.notifyChange()时,是否ContentObserver观察到此URI的后代 URI?

E.g。假设我有一个游标设置来观察特定资源的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会被通知吗?

2 个答案:

答案 0 :(得分:30)

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

通过该方法完成注册 ContentResolver#registerContentObserver

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

答案 1 :(得分:12)

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