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

tom*_*nor 16 android uri android-contentresolver android-contentprovider contentobserver

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

例如,假设我有一个游标设置来观察特定资源的URI:

 Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21");
 cursor.setNotificationUri(getContext().getContentResolver(), uriA);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Xia*_*iao 30

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

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

void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)
Run Code Online (Sandbox Code Playgroud)


tom*_*nor 12

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

  • 我相信我的答案更准确.你能接受它还是将它纳入你自己的答案中?我有一种感觉,人们通常不会过去接受的答案. (6认同)